JavaFX TabPane:为什么选择不同的选项卡后内容不会刷新?

时间:2016-06-10 02:10:47

标签: javafx tabpanel

所以我目前正在使用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。

1 个答案:

答案 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
    }
}

然后您从控制器调用此方法。