JavaFX按钮大小相同

时间:2014-09-09 22:26:10

标签: javafx javafx-8

我有不同大小的这些按钮:

Image

如何使所有按钮的大小相同?

2 个答案:

答案 0 :(得分:7)

这取决于按钮所在的布局。例如,如果将所有按钮添加到GridPane或BorderPane中,则必须指定每个按钮宽度以对应于特定变量。在下面的示例中,我将所有按钮包装在VBox中,设置VBox首选项宽度并将所有按钮最小宽度绑定到它:

VBox vBox = new VBox();
vBox.setPrefWidth(100);

Button btn1 = new Button("Short");
Button btn2 = new Button("Super Long Button");

btn1.setMinWidth(vBox.getPrefWidth());
btn2.setMinWidth(vBox.getPrefWidth());

vBox.getChildren().addAll(btn1, btn2);

值得一提的是,有两种方法可以指定按钮大小。您可以在java代码中执行此操作,也可以在javafx .fxml文件中指定它。上面的方法是java代码实现的一个例子。


您也可以松开按钮的最大尺寸,以便它可以增长以填充可用空间(与大多数节点不同,默认情况下,按钮节点会将其最大尺寸限制在它的首选位置。\ n \ n尺寸因此它通常不会增长以填充可用空间)。关于Tips for Sizing and Aligning Nodes的Oracle教程更详细地解释了这一点。

VBox vBox = new VBox();

Button btn1 = new Button("Short");
Button btn2 = new Button("Super Long Button");

btn1.setMaxWidth(Double.MAX_VALUE);
btn2.setMaxWidth(Double.MAX_VALUE);

vBox.getChildren().addAll(btn1, btn2);

答案 1 :(得分:6)

使用css可以覆盖所有按钮的首选宽度,如

.button {
    -fx-pref-width: 200px;
}

或为某些按钮组创建自己的样式类,并将样式添加到按钮,如: 的CSS:

.my-special-button {
    -fx-pref-height: 28px;
    -fx-pref-width: 200px;
}

然后将样式设置为按钮 FXML:

styleClass="my-special-button"

或在java

myButton.getStyleClass().add("my-special-button");