Как установить изображение размером с кнопку в JavaFX

#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);