#java #image #button #javafx
#java #изображение #кнопка #javafx
Вопрос:
Я использую JavaFX для школы, и мне нужно отображать изображение на кнопке, когда я нажимаю на нее. Моя проблема в том, что изображение больше кнопки, и тогда все ужасно. Я видел несколько сообщений о том, как поместить изображение на кнопку, и я пришел с этим кодом
Image imageOk = new Image(getClass().getResourceAsStream("/TP2/ressources/flag.png"));
ImageView img = new ImageView(imageOk);
img.setFitWidth(100);
img.setFitHeight(100);
btn.setGraphic(img);
Когда я создаю кнопку, я использую setPrefSize(50, 50);
Ответ №1:
Вы можете использовать fitWidthProperty
и fitHeightProperty
ImageView и привязать их к widthProperty
и heightProperty
кнопки:
img.fitWidthProperty().bind(btn.widthProperty());
img.fitHeightProperty().bind(btn.heightProperty());
Это приведет к тому, что ImageView будет иметь тот же размер, что и кнопка каждый раз.
Это может привести к растягиванию изображения. Чтобы предотвратить это, вы можете использовать setPreserveRatio
на изображении:
img.setPreserveRatio(true);
Вот полный пример кода:
Button btn = new Button();
btn.setPrefSize(50, 50);
Image imageOk = new Image(getClass().getResourceAsStream("yes.png"));
ImageView img = new ImageView(imageOk);
img.setPreserveRatio(true);
img.fitWidthProperty().bind(btn.widthProperty());
img.fitHeightProperty().bind(btn.heightProperty());
btn.setGraphic(img);