首页 > 解决方案 > 如何在 JavaFx 中调用更改 Tab 的方法?

问题描述

好的,这就是我想要做的:我有一个名为“SettingsPage”的页面。现在,在这个页面中,我有一个带有 3 个选项卡的 tabPane;用户、按钮和销售。按钮和用户都有表格,需要在用户查看之前填充数据。当我第一次制作程序时,我只是使用“初始化”方法在“设置页面”打开时填充用户表。但是,现在我开始尝试填充按钮表,我遇到了内存错误,因为现在要一起加载的数据太多了。

因此,我认为一个很好的解决方案是创建一个 Event 方法,该方法在打开某个选项卡时调用。我正在使用 SceneBuilder atm,似乎与此等效的是 onSelectionChanged,但是我似乎无法使用它,因为您将使用“methodEg(ActionEvent 事件)...”。所以我的问题是,如何确保在打开某个选项卡时调用一个方法。

例如,当单击“buttonTab”时,会调用“populateButtonTable”方法。

标签: javafxtabslistenerfxml

解决方案


答案是这段代码:

如果有人问我为什么不使用 .isSelected()... 我做到了,由于某种原因它不起作用,但我在下面所做的工作,所以我不知道...

'''

@FXML public void initialize(URL url, ResourceBundle rb){


   tabs.getSelectionModel().selectedItemProperty().addListener(
            new ChangeListener<Tab>() {
                @Override
                public void changed(ObservableValue<? extends Tab> ov, Tab t, Tab t1) 
                {                        
                    if (tabs.getSelectionModel().getSelectedItem() == ExampleTab)
                    {
                        //do whatever
                    }      
                }
             }
    );

推荐阅读