需要触发 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);
});