【问题标题】:Nodes in VBox don't have the same widthVBox 中的节点不具有相同的宽度
【发布时间】:2016-12-11 23:38:58
【问题描述】:

我使用 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);

TextFieldDatePicker 的宽度相等。但是Spinner 略短。
我怎样才能让所有的尺寸都一样?

注意:使用.setMinWidth(Control.USE_PREF_SIZE); 会导致VBox 的父节点(扩展StackPane)出现布局问题。


说明:带边框的Component扩展StackPane,只能容纳一个node。在这种情况下,“节点”是 VBox,它包含 3 个输入字段和按钮。

【问题讨论】:

    标签: java css javafx width input-field


    【解决方案1】:

    在各个控件上使用 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);
    

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 2017-02-27
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      相关资源
      最近更新 更多