2012-12-18 21 views
1

我正在用JavaFX创建TableView。我想在右键单击鼠标时显示Context Menu。所以我按照以下给出的方式做。如何在特定点获取TableView中的行号?

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

我可以提出一个有点不同的解决方案,如果没有obligatively需要行号。

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

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

这是一个节点,和家长,负责细胞渲染(那是后话,它包含滚动条,并显示您的细胞 - 的tableView的含量)。

你可以叫setOnMouseClick(...),并设置一个处理程序。

相关问题