如何在TableView中获取特定点的行号?

我在JavaFX中创建TableView 。 我想在鼠标右键单击显示Context Menu 。 所以我按照下面给出的那样做。

  EventHandler event = new EventHandler() { @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); 

但我想这样做只有在我点击TableView任何行时,才能看到Context Menu 。 即如何在TableView中获取特定点的行号,这样我的Context Menu应该只有可见,如果我点击TableView任何一行。

如果没有必要的行号,我可以建议一个不同的解决方案。

每个节点都有一个方法Node.getChildrenUnmodifiable(),它返回直接子节点列表。

完成递归搜索后,对节点 – >子节点 – >子子节点等使用该方法的递归调用,您可以找到类com.sun.javafx.scene.control.skin.VirtualFlow的对象。

这是一个Node和Parent,它负责单元格渲染(这是包含滚动条并显示单元格的东西 – tableView的内容)。

您可以调用setOnMouseClick(…)并为其设置处理程序。