如何在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(…)并为其设置处理程序。