首页 > 解决方案 > 使图像与文字一样高

问题描述

我有一个Button带文本和一个ImageViewas 图标。图像可能具有任何分辨率。目前,按钮会调整其大小以适应图像,例如,如果图像是 400x400,则按钮会很大,而旁边的文本会很小。

不过,我想要的是适合按钮的图像。它应该始终与文本一样高。

ImageView img = new ImageView(image);
button = new Button("Some text", img);
button.setStyle("-fx-background-radius: 6em;");

带有大图像和小文本的按钮

标签: javauser-interfacejavafx

解决方案


没想到解决方案如此简单:

img.setPreserveRatio(true);
img.setFitHeight(button.getFont().getSize());

对我有用。JavaFX 有时非常不直观。如果字体大小可能发生变化(例如通过 CSS 样式),请改用绑定:

img.fitHeightProperty().bind(Bindings.createDoubleBinding(() -> button.getFont().getSize(), button.fontProperty()));

推荐阅读