2012-12-18 2 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); 

는하지만 난 TableView의 모든 행을 클릭 한 경우 Context Menu 만 볼 수 있어야 그렇게하고 싶다. 즉, 특정 포인트에서 TableView의 행 번호를 얻는 방법은 TableView의 행을 클릭하면 내 Context Menu 만 표시되도록해야합니다.

답변

1

행 번호가 필수적으로 필요하지 않으면 조금 다른 해결책을 제안 할 수 있습니다.

각 노드에는 직접 하위 노드 목록을 반환하는 Node.getChildrenUnmodifiable() 메서드가 있습니다.

노드 -> 서브 노드 -> 서브 서브 노드 등에서 재귀 호출을 사용하여 재귀 호출을 수행하면 com.sun.javafx.scene.control.skin.VirtualFlow 클래스의 객체를 찾을 수 있습니다.

Node는 셀 렌더링을 담당하는 Parent이며, 이는 scrollBars를 포함하고 있으며 tableView의 셀 내용을 보여줍니다.

setOnMouseClick (...)을 호출하고 해당 핸들러를 설정할 수 있습니다.

관련 문제