VBox 中的节点不具有相同的宽度
Nodes in VBox don't have the same width
我使用 VBox
来提供 3 个输入字段。
它们都是这样设置的:
tf = new TextField();
tf.setPrefWidth(Double.MAX_VALUE);
sp = new Spinner<Integer>(0, 3, 1);
sp.setPrefWidth(Double.MAX_VALUE);
dp = new DatePicker(LocalDate.now());
dp.setPrefWidth(Double.MAX_VALUE);
vbox.getChildren().addAll(tf, sp, dp);
TextField
和DatePicker
的宽度相等。然而 Spinner
稍短。
我怎样才能得到相同的大小?
注意:使用 .setMinWidth(Control.USE_PREF_SIZE);
会导致 VBox
的父节点(扩展 StackPane
)出现布局问题。
解释:带边框的 Component extends StackPane
,只能容纳一个 node
。本例中的 "node" 是一个 VBox
,它包含 3 个输入字段和按钮。
在各个控件上使用 setMaxWidth
并在 VBox
本身上调用 setFillWidth(true)
:
tf = new TextField();
tf.setMaxWidth(Double.MAX_VALUE);
sp = new Spinner<Integer>(0, 3, 1);
sp.setMaxWidth(Double.MAX_VALUE);
dp = new DatePicker(LocalDate.now());
dp.setMaxWidth(Double.MAX_VALUE);
vBox.setFillWidth(true);
vbox.getChildren().addAll(tf, sp, dp);
我使用 VBox
来提供 3 个输入字段。
它们都是这样设置的:
tf = new TextField();
tf.setPrefWidth(Double.MAX_VALUE);
sp = new Spinner<Integer>(0, 3, 1);
sp.setPrefWidth(Double.MAX_VALUE);
dp = new DatePicker(LocalDate.now());
dp.setPrefWidth(Double.MAX_VALUE);
vbox.getChildren().addAll(tf, sp, dp);
TextField
和DatePicker
的宽度相等。然而 Spinner
稍短。
我怎样才能得到相同的大小?
注意:使用 .setMinWidth(Control.USE_PREF_SIZE);
会导致 VBox
的父节点(扩展 StackPane
)出现布局问题。
解释:带边框的 Component extends StackPane
,只能容纳一个 node
。本例中的 "node" 是一个 VBox
,它包含 3 个输入字段和按钮。
在各个控件上使用 setMaxWidth
并在 VBox
本身上调用 setFillWidth(true)
:
tf = new TextField();
tf.setMaxWidth(Double.MAX_VALUE);
sp = new Spinner<Integer>(0, 3, 1);
sp.setMaxWidth(Double.MAX_VALUE);
dp = new DatePicker(LocalDate.now());
dp.setMaxWidth(Double.MAX_VALUE);
vBox.setFillWidth(true);
vbox.getChildren().addAll(tf, sp, dp);