2016-09-23 7 views
2

나는 TreeTableView (JavaFX 8)으로 작업하고 있습니다. 일부 트리 노드는 선택을 위해 비활성화해야합니다. 선택 이벤트를 시도했지만 작동하지 않습니다. 자세한 내용은 아래 코드를 참조하십시오.TreeItem 선택을 방지하는 방법은 무엇입니까?

treeTableView.getSelectionModel().selectedItemProperty().addListener(
       (observable, oldValue, newValue) -> 
    { 
     // utility node 
     if(newValue.getValue() instanceof UtilityRoot) 
     { 
      return; 
     } 
    } 
); 

TreeItems의 마우스 및 키보드 선택을 방지하려면 어떻게해야합니까?

답변

1

청취자를 호출하기 전에 발생하는 선택을 막으려 고 할 때 이미 너무 늦은 선택한 항목이 변경 될 때마다 청취자를 추가하기 만하면 달성 할 수 없습니다.

은 기본적으로 당신은 당신이 treeTableView.getSelectionModel().setSelectionMode(selectionMode)를 사용하여 SINGLE 또는 MULTUPLE 선택 모드를 원하는 경우 지정할 수 있습니다 당신이 treeeTableView.getSelectionModel().setCellSelectionEnabled(enabled)를 사용하여 셀 선택을 허용 할 경우.

  • SelectionMode.SINGLE 및 셀 선택은 enabled : 테이블의 단일 셀의 선택을 가능.
  • SelectionMode.SINGLE 및 셀 선택 disabled : 테이블에서 단일 행을 선택할 수 있습니다.
  • SelectionMode. MULTUPLE 및 셀 선택 enabled : 여러 행의 여러 셀을 선택할 수 있습니다.
  • SelectionMode. MULTUPLE 및 셀 선택 disabled : 테이블에서 여러 행을 선택할 수 있습니다. 당신을 위해 충분하지 않은 경우

, 당신은 TreeTableViewSelectionModel 자신을 구현하고 setSelectionModel(TreeTableView.TreeTableViewSelectionModel<S> value)를 사용하여 설정해야합니다.

+0

Nicolas, 도움을 많이 주셔서 감사합니다. 코드 예제를 찾을 수 있습니까? 모든 TreeTableViewSelectionModel 메소드를 정확하게 오버라이드 (override)하는 방법은 분명하지 않습니다. 웹에 예제가 없습니다. – panditos

+0

좋은 질문입니다. 지금까지는 그렇게 할 필요가 없었고, 실제로는 쉽지 않은 것 같습니다. 예를 들어, JDK의 소스 코드를 살펴볼 필요가 있습니다 (예 : http://grepcode.com/file/repo1). maven.org/maven2/net.java.openjfx.backport/openjfx-78-backport/1.8.0-ea-b96.1/javafx/scene/control/TreeTableView.java # TreeTableView.TreeTableViewArrayListSelectionModel 당신은 새로운 그 질문은 –

+0

니콜라스, 고마워. 나는이 방향으로 파고들 것이다. – panditos

관련 문제