在运行时调整选项卡窗格(JavaFX 8)

时间:2015-03-20 12:35:16

标签: java javafx-8

我有一个看起来像这样的窗口:

enter image description here

我想要的是,当用户从底部的combobox中选择特定项目时,在labels和底部textfields之间会显示其他buttonstextfield,所以它看起来像这样:

enter image description here

为此,我使用了另一个高度为0的网格窗格:

enter image description here

当我只是从构建器向该网格添加行时,tabPane会自动调整大小,我得到了我在第二张图片上显示的内容。但是,当我尝试在代码中执行此操作时,请执行以下操作:

            ColumnConstraints col1 = new ColumnConstraints();
            ColumnConstraints col2 = new ColumnConstraints();
            ColumnConstraints col3 = new ColumnConstraints();
            ColumnConstraints col4 = new ColumnConstraints();
            ColumnConstraints col5 = new ColumnConstraints();
            ColumnConstraints col6 = new ColumnConstraints();

            myGrid.getColumnConstraints().addAll(col1,col2,col3,col4,col5,col6);

            myGrid.add(new Label("Label"), 0, 0);
            myGrid.add(new Label("Label"), 0, 1);
            myGrid.add(new Label("Label"), 0, 2);
            myGrid.add(new Label("Label"), 0, 3);
            myGrid.add(new Label("Label"), 0, 4);
            myGrid.add(new Label("Label"), 0, 5);

            myGrid.add(new TextField(), 1, 0);
            myGrid.add(new TextField(), 1, 1);
            myGrid.add(new TextField(), 1, 2);
            myGrid.add(new TextField(), 1, 3);
            myGrid.add(new TextField(), 1, 4);
            myGrid.add(new TextField(), 1, 5);
  • 在这里myGrid - 是gridpane,其中身高= 0。而且我有这样的屏幕,tabpane没有重新调整大小:

enter image description here

我做错了什么?有人可以解释一下吗?

BTW - 关于所有其他元素,例如HBox和其他地方pref Height = USE_COMPUTED_SIZE

2 个答案:

答案 0 :(得分:0)

到目前为止你尝试了什么?

我相信在添加所有孩子后调用myGrid.autosize();可以解决您的问题。

答案 1 :(得分:0)

好吧,对我来说,作为解决方案(“脏”解决方案)的工作原理如下:

// Height set manually
tabPane.getScene().getWindow().setHeight(700);

如果有人知道如何动态设置它的高度(取决于GridPane高度),请回复。