【问题标题】:How does one call a method on the changing of a Tab in JavaFx?如何在 JavaFx 中调用更改 Tab 的方法?
【发布时间】:2020-07-24 17:12:38
【问题描述】:

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

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

例如,当'buttonTab'被点击时,'populateButtonTable'方法被调用。

【问题讨论】:

  • this 回答你的问题了吗?
  • "我好像不能用这个" 为什么不呢?当你尝试时会发生什么?
  • @James_D 它说它不存在。每当我放置 ActionEvent 或 EventManager 或类似的方法时,它都会提示导入它们,然后我可以在该类中使用它们,但是对于 onSelectionChanged 尝试了很多不同的组合并且不存在
  • @c0der 我觉得可以,我稍后再试试,让你知道
  • 显示你尝试过的代码。

标签: javafx tabs listener fxml


【解决方案1】:

答案是这段代码:

如果有人问我为什么不使用 .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
                    }      
                }
             }
    );

【讨论】:

  • 没有上下文(例如minimal reproducible example)这对未来的读者没有多大帮助..您可能会考虑添加应该在您的问题中的上下文,顺便说一句:)
  • @kleopatra 好吧,我实际上在我的问题中写出了上下文,我只是没有显示代码,因为没有意义。如果我展示了我拥有的代码,它不会增加任何价值,因为只会显示一些数据填充和变量初始化。这里也是如此,为什么还要显示代码来初始化选项卡?像什么?您在寻找什么样的背景?
  • 实际上,您没有;) 在寻求调试帮助时,您必须提供可重现的代码示例,否则无法回答问题。这只是基本的侦听器代码(并不是很好,格式错误,老式的事件处理程序与 lambda 相比,不遵循 java 命名约定)——这对阅读和理解基本教程的人有什么帮助?
猜你喜欢
  • 2016-10-17
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-08
相关资源
最近更新 更多