在我的JavaFX应用程序中,我在TabPane
中有一个TitledPane
。 TabPane
内是一个VBox
,其中包括一个按钮,该按钮可增加该VBox
中的元素数量(并因此增加VBox
的高度)。
但是,当VBox增大时,我似乎无法获得Tab
/ TabPane
进行大小调整。 (删除TabPane
并将VBox
放入TitledPane
中会直接导致即时调整大小。)但是,更改选项卡会使TabPane
意识到它太小且无法调整大小。
下面是一个可以重现此效果的小示例FXML。单击第一个选项卡中的按钮任意次,然后切换选项卡。 TabPane
然后将调整大小以适应新的内容量。
如何在按钮操作中调整TabPane
的大小?
fxml:
<AnchorPane xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="FXMLController" prefHeight="400" prefWidth="700">
<children>
<TitledPane>
<TabPane>
<tabs>
<Tab>
<VBox fx:id="vBox">
<children>
<Button onAction="#addElement" />
</children>
</VBox>
</Tab>
<Tab />
</tabs>
</TabPane>
</TitledPane>
</children>
</AnchorPane>
控制器:
@FXML VBox vBox;
@FXML void addElement() {
vBox.getChildren().add(new Label("Hello World"));
}
(当然,为了简洁起见,我省略了适当的导入)
最佳答案
要进行重绘,您需要将TabPane
标记为“脏”,这需要重新计算UI中的大小。
这是通过在requestLayout()
上调用方法TabPane
来完成的。
请参阅TabPane
及其超类Parent
的文档
为了使该示例起作用,请将fx:id="tabPane"
添加到<TabPane>
fxml节点,然后将字段@FXML TabPane tabPane;
添加到控制器,并将行tabPane.requestLayout()
添加到#addElement
。
关于java - JavaFX VGrow TabPane上的内容更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34805202/