2016-09-23 208 views
2

我有TreeTableViewJavaFX 8)工作。有些樹節點必須禁用才能進行選擇。我曾嘗試選擇事件,但它不起作用。請查找以下代碼以獲取更多信息。如何防止TreeItem選擇?

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

我如何防止任何鼠標和鍵盤選擇一些TreeItems

回答

1

什麼你試圖達到無法工作,因爲它只是增加了一個監聽通知任何時候選擇的項目變更如要防止在調用偵聽器之前恰好選擇這已經太晚了,你的情況。

默認情況下,你可以並指定,如果你想使用treeTableView.getSelectionModel().setSelectionMode(selectionMode)SINGLEMULTUPLE選擇模式,如果你想允許小區選擇使用treeeTableView.getSelectionModel().setCellSelectionEnabled(enabled)

  • SelectionMode.SINGLE和單元格選擇enabled:允許選擇表格中的單個單元格。
  • SelectionMode.SINGLE和小區選擇disabled:允許在表中的單個行的選擇。
  • SelectionMode. MULTUPLE和小區選擇enabled:允許在多個行的幾個細胞的選擇。
  • SelectionMode. MULTUPLE和小區選擇disabled:啓用表中的幾行的選擇。

如果不是對你不夠好,你將需要實現自己的TreeTableViewSelectionModel並使用setSelectionModel(TreeTableView.TreeTableViewSelectionModel<S> value)設置。

+0

尼古拉斯,非常感謝您的幫助。有沒有機會找到代碼示例?我不清楚如何覆蓋所有'TreeTableViewSelectionModel'方法。網絡上沒有找到任何示例。 – panditos

+0

好問題,我從來沒有這樣做過,而且看起來並不容易,例如你應該看一下JDK的源代碼,例如http://grepcode.com/file/repo1 .maven.org/maven2的/ net.java.openjfx.backport /的OpenJFX-78-反向移植/ 1.8.0-EA-b96.1/JavaFX的/場景/控制/ TreeTableView.java#TreeTableView.TreeTableViewArrayListSelectionModel你可以考慮要求新對那個問題 –

+0

尼古拉斯,謝謝。我會朝這個方向挖掘 – panditos