所以我目前是第一次在JavaFx中使用tabpane。
在它没有按预期工作后,我一次减少了一点选项卡窗格的内容,直到它看起来像这样:
<ScrollPane prefWidth="Infinity" prefHeight="Infinity" fitToWidth="true" xmlns:fx="http://javafx.com/fxml"
fx:controller="de.Cos4U.ui.scene.control.CosplayView">
<VBox alignment="top_left" minWidth="200" prefHeight="200" spacing="5">
<TabPane prefHeight="Infinity" minHeight="Infinity">
<tabs>
<Tab text="Tab1">
<content>
<Label text="test"/>
</content>
</Tab>
<Tab text="Tab2">
<content>
<Label text="tests2"/>
</content>
</Tab>
</tabs>
</TabPane>
</VBox>
</ScrollPane>
选择"Tab2"后,内容区域仍显示标签"测试"。滚动后,它会立即刷新。这是一个简单的选项卡窗格,那么为什么它不刷新其内容呢?
编辑:我现在正在使用1.8u74。我编辑了 fxml,所以现在它尽可能完整,但尽可能减少。控制器不会以任何方式影响选项卡窗格。到目前为止,它处理简单的用户输入。删除此示例不需要的任何内容后,它减少到 0。
我曾经有同样的问题。我没有它无法正确更新的确切原因,但是如果您想强制刷新布局,您可以请求它,而不是使用更改大小等解决方法。
requestLayout();
假设您要在控制器中设置选项卡的内容。
class Panel extends TabPane {
private Tab tab;
public void setTabContent(Node container) {
tab.setContent(container);
getSelectionModel().select(tab);
requestLayout(); // to force refresh the layout
}
}
然后从控制器调用此方法。