所以我目前正在使用JavaFx中的tabpane。
在它没有按预期工作之后,我一次将tabpanes内容减少一点,直到看起来像这样:
<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”后,内容区域仍显示标签“test”。滚动后会立即刷新。这是一个简单的tabpane,为什么不刷新它的内容呢?
编辑:我现在正在使用1.8u74。我编辑了fxml所以现在它和needet一样完整,但尽可能地减少了。 控制器不会以任何方式影响选项卡窗格。到目前为止它处理简单的用户输入。删除此示例后我不需要的任何内容,它将减少为0。
答案 0 :(得分:1)
我曾经有过同样的问题。我没有确切的原因来解释为什么它不能正确更新,但是如果您想强制刷新版式,则可以请求它,而不必使用更改大小的变通方法。
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
}
}
然后您从控制器调用此方法。