我在JavaFX中创建TableView
。我想在鼠标右键单击时显示Context Menu
。所以我正如下面给出的那样。
EventHandler event = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent me) {
if (me.getButton() == MouseButton.SECONDARY) {
tableView.getContextMenu().show(tableView, me.getSceneX(), me.getSceneY());
}
}
};
tableView.addEventHandler(MouseEvent.MOUSE_CLICKED, event);
但我希望这样做Context Menu
只有在点击TableView
中的任何行时才能看到。
即如何在TableView中获取特定点的行号,这样我的Context Menu
只应该可见,如果我点击TableView
的任何一行。
答案 0 :(得分:1)
如果不需要行号,我可以建议一个不同的解决方案。
每个节点都有一个方法Node.getChildrenUnmodifiable(),它返回直接子节点列表。
完成递归搜索后,对节点使用该方法的递归调用 - &gt;子节点 - &gt;子类节点等你可以找到类com.sun.javafx.scene.control.skin.VirtualFlow的对象。
这是一个Node和Parent,它负责单元格渲染(这是包含滚动条并显示单元格的东西 - tableView的内容)。
您可以调用setOnMouseClick(...)并为其设置处理程序。