答案 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");