2012-12-18 22 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(...),並設置一個處理程序。

相關問題