【问题标题】:How to get the tableview object which is inside a tab which inturn is inside a Tabpane Javafx如何获取选项卡内的表格视图对象,该选项卡又位于 Tabpane Javafx 内
【发布时间】:2016-10-12 11:16:55
【问题描述】:

我有一个包含 13 个选项卡的选项卡,这 13 个选项卡中的每一个都有 13 个表格视图以及每个选项卡中的按钮和标签等一些组件

我想通过从特定选项卡中选择 tableview 来获取 tableview 对象。 就像如果焦点出现在表格视图上,我可以知道它来自哪个选项卡,以便我可以在方法中使用特定的表格视图对象。

因为我有一个方法可以执行相同的任务,只是表格视图会根据选项卡而改变,如果我可以获得表格视图,我不需要编写 13 种方法。但问题是 tabpane dosent 上的选项卡只有 tableview 它也有标签按钮。如何获取确切的信息我不确定如何进一步移动,因为我真正想要的就像我有一个方法可以执行一项任务,该任务相同,只是 tableview 会根据选项卡而变化,所以如果我能得到 tableview obj对于每个选项卡,我不需要编写 13 种方法。但问题是 tabpane dosent 上的选项卡只有 tableview 它也有标签按钮。如何获取准确的节点。

选项卡和选项卡窗格背后的逻辑是一个 fxml 组件。我正在使用 fxml 组件来开发我的应用程序。

例如:-

Set<Report> selection = new HashSet<Report>(businessEventReport.getSelectionModel().getSelectedItems());

这里的 businessEventreport 是表格中的表格视图,我想通过关注选项卡的特定表格视图来获取特定的表格视图。

我该怎么做。

我可以使用

   SingleSelectionModel<Tab> selectionModel = tabpane.getSelectionModel();
   selectionModel.getSelectedItem().getContent();

但在那之后我被卡住了。

【问题讨论】:

  • 看来你做对了。'getContent(); ' 返回一个 TableView。
  • 我不知道如何更进一步,因为我真正想要的就像我有一个方法可以完成一项任务,它只是表格视图根据选项卡而变化,如果我能得到表格视图我不需要编写 13 种方法。但问题是 tabpane dosent 上的选项卡只有 tableview 它也有标签按钮。如何获取精确节点。
  • 嗯,问题中没有提到。所以每个选项卡都包含一个布局,其中包含多个控件,包括一个 TableView。每个选项卡布局都是使用 fxml 或纯 java 代码制作的?我的意思是每个选项卡背后的逻辑tab 是一个具有布局(或扩展它)及其组件的类?
  • Sorryi 会马上更新问题,因为我想如果我得到一个组件我可以得到所有,每个类背后的逻辑都是一个 fxml 组件。
  • 你可以做的是在代表 fxml 控制器的类中添加一个方法。例如 'getTableView();' 然后当你从选项卡中获取内容时,你实际上得到了一个 fxml 控制器。例如类‘IController’。你可以调用它的方法‘getTableView(); '你有你需要的。如果你需要更详细的答案,我可以在我一拿到电脑就写一个:)。

标签: javafx tabs javafx-2 tabpanel


【解决方案1】:

一种解决方案是为每个 TableView 分配一个标识符。这个 然后,标识符将用于使用查找方法从每个选项卡(或整个场景)上的一组控件中发现 TableView。

要为每个 TableView 设置标识符,请使用 Node.setId method

tableView.setId("MyTable")

要从 TabPane 中查找 TableView,请使用 Node.lookup method

Tab selectedTab = tabPane.getSelectionModel().getSelectedItem()
Node selectedContent = selectedTab.getContent()
TableView selectedTable = selectedContent.lookup("#MyTable")

查找方法搜索用于执行查找的节点的子节点。这使您可以灵活地为每个 TableView 分配一个唯一标识符,允许从 TabPane 本身进行查找,或者为它们分配所有相同的标识符并使​​用父 Tab 来发现 TableView(上面的示例)。

查找方法使用 CSS 选择器来查找控件,因此标识符不是强制性的。另一种方法是使用 TabPane 和 TableView 的类类型和状态来形成选择器。类似于以下内容(未经测试)。

selectedContent.lookup(".tab-pane > .tab:selected > .table-view")

【讨论】:

  • great Blair 保存了我的 LOC,只需一个 Tweak,您必须在那里添加一个 TypeCast,例如 TableView selectedTable = (TableView)selectedContent.lookup("#MyTable") 谢谢,这就是我在找的对于
猜你喜欢
  • 1970-01-01
  • 2014-07-16
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 2017-10-21
  • 2017-01-28
  • 1970-01-01
相关资源
最近更新 更多