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

时间:2012-12-18 10:31:06

标签: java tableview javafx-2 javafx

我在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的任何一行。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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