需要触发 JavaFX TableView 的内置 Table 菜单按钮
Need to trigger JavaFX TableView's built-in Table Menu Button
我有一个应用程序,其中 TableView
将根据数据库查询动态创建。这意味着我的应用程序将有多个 table 具有不同的列。
我必须为 show/hide 列显示一个单独的按钮。我熟悉用 table.setTableMenuButtonVisible()
触发的 table 菜单按钮。不幸的是,我无法在 UI 上使用实际的屏幕内置按钮,尽管我想使用它的功能。
我基本上是在寻找 table.getTableMenu().show()
有点叫。但我找不到这是任何类型的内置方法。有没有一种方法可以从我自己设计的 UI 按钮调用此按钮的操作?
实际上,我的评论是错误的:可以在没有反射的情况下查找角区域并触发其 mousePressedHandler。
下面的代码片段打开角落菜单就像它被直接点击一样(至少在 fx11 中,并且仍然依赖于打开是由 mousePressed 事件触发的实现细节):
Button showCorner = new Button("open menu button");
showCorner.addEventHandler(MouseEvent.MOUSE_PRESSED, e -> {
Node corner = table.lookup(".show-hide-columns-button");
corner.fireEvent(e);
});
我有一个应用程序,其中 TableView
将根据数据库查询动态创建。这意味着我的应用程序将有多个 table 具有不同的列。
我必须为 show/hide 列显示一个单独的按钮。我熟悉用 table.setTableMenuButtonVisible()
触发的 table 菜单按钮。不幸的是,我无法在 UI 上使用实际的屏幕内置按钮,尽管我想使用它的功能。
我基本上是在寻找 table.getTableMenu().show()
有点叫。但我找不到这是任何类型的内置方法。有没有一种方法可以从我自己设计的 UI 按钮调用此按钮的操作?
实际上,我的评论是错误的:可以在没有反射的情况下查找角区域并触发其 mousePressedHandler。
下面的代码片段打开角落菜单就像它被直接点击一样(至少在 fx11 中,并且仍然依赖于打开是由 mousePressed 事件触发的实现细节):
Button showCorner = new Button("open menu button");
showCorner.addEventHandler(MouseEvent.MOUSE_PRESSED, e -> {
Node corner = table.lookup(".show-hide-columns-button");
corner.fireEvent(e);
});