需要触发JavaFX TableView的内置“表格菜单”按钮

时间:2019-01-30 16:24:48

标签: java javafx javafx-8

我有一个应用程序,其中将基于数据库查询动态创建TableView。这意味着我的应用程序将具有多个具有不同列的表。

我必须显示一个单独的按钮来显示/隐藏列。我熟悉用table.setTableMenuButtonVisible()触发的表格菜单按钮。不幸的是,尽管我想使用它的功能,但我无法使用UI上实际的屏幕内置按钮。

JavaFX TableView showing menu button

我本质上是在寻找 table.getTableMenu().show() 有点电话。但是我找不到这是任何一种内置方法。有没有一种方法可以从我自己设计的UI按钮调用此按钮的动作?

1 个答案:

答案 0 :(得分:3)

实际上,我的评论是错误的:可以查找角区域并触发其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);
});