JavaFX buttons with same size
我有这些具有不同大小的按钮:
图片
如何使所有按钮的尺寸相同?
这取决于按钮所在的布局。例如,如果将所有按钮添加到GridPane或BorderPane中,则必须指定每个按钮的宽度以对应于某些变量。在下面的示例中,我将所有按钮包装在VBox内,设置VBox首选项宽度并将所有按钮的最小宽度绑起来。
1 2 3 4 5 6 7 8 9 10 | 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代码实现的示例。
您还可以松开按钮的最大尺寸,使其增大以填充可用空间(与大多数节点不同,默认情况下,按钮节点的最大尺寸被限制为首选大小,因此通常不会增大以填充可用空间)。甲骨文的"调整节点大小和对齐技巧"教程对此进行了更详细的说明。
1 2 3 4 5 6 7 8 9 | 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); |
使用CSS您可以覆盖所有按钮的首选宽度,例如
1 2 3 | .button { -fx-pref-width: 200px; } |
或为某些按钮组创建自己的样式类,然后将样式添加到按钮,例如:
CSS:
1 2 3 4 | .my-special-button { -fx-pref-height: 28px; -fx-pref-width: 200px; } |
然后使用以下任一方法将样式设置为您的按钮
fxml:
1 | styleClass="my-special-button" |
或用Java
1 | myButton.getStyleClass().add("my-special-button"); |