J.erome:
Estou usando o JavaFX para a escola e eu preciso para exibir uma imagem em um botão quando eu clicar sobre ele. Meu problema é que a imagem é maior do que o botão e, em seguida, tudo é horrível. Eu vi múltiplos postar em como encaixar uma imagem a um botão e eu vim com esse código
Image imageOk = new Image(getClass().getResourceAsStream("/TP2/ressources/flag.png"));
ImageView img = new ImageView(imageOk);
img.setFitWidth(100);
img.setFitHeight(100);
btn.setGraphic(img);
Quando eu criar o uso botão I setPrefSize(50, 50);
Samuel Philipp:
Você pode usar o fitWidthProperty
e fitHeightProperty
do ImageView e aprisioná-los ao widthProperty
e heightProperty
do botão:
img.fitWidthProperty().bind(btn.widthProperty());
img.fitHeightProperty().bind(btn.heightProperty());
Isso fará com que o ImageView ter o mesmo tamanho que o botão de cada vez.
Isso pode fazer com que a imagem a ser esticado. Para evitar isso, você pode usar setPreserveRatio
na imagem:
img.setPreserveRatio(true);
Aqui está o código exemplo completo:
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);