我使用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);
导致布局问题StackPane
的父节点(扩展VBox
)。
Explination:带边框的Component扩展StackPane
,只能容纳一个node
。在这种情况下,“节点”是VBox
,它包含3个输入字段和按钮。
答案 0 :(得分:2)
对各个控件使用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);