我有一个带有上下文菜单的TreeView,所有工作除了树是空的。当树为空时,我想阻止向用户显示上下文菜单。
//Set up context menu and menu items
final ContextMenu contextMenu = new ContextMenu();
final MenuItem miSubir = new MenuItem("Subir");
final MenuItem miBajar = new MenuItem("Bajar");
final MenuItem miBorrar = new MenuItem("Borrar");
//add events from clic on menu items
miBorrar.setOnAction((ActionEvent event) -> {
...
});
...
//Add menu items to context menu
contextMenu.getItems().add(miSubir);
contextMenu.getItems().add(miBajar);
contextMenu.getItems().add(miBorrar);
//Associate context menu to treeview
treeEjercicios.setContextMenu(contextMenu);
当我使用Table组件时,我解决了以下问题:
row.contextMenuProperty().bind(
Bindings.when(row.emptyProperty())
.then((ContextMenu) null)
.otherwise(contextMenu)
);
但我不知道如何申请使用TreeView或任何其他替代方案?
答案 0 :(得分:0)
如果显示了根项,即tree.setShowRoot(true)
,则可以假设当根项为空时,树视图为空。所以我们可以绑定它
tree.contextMenuProperty().bind(
Bindings.when( Bindings.isNull( tree.rootProperty() ) )
.then( (ContextMenu) null)
.otherwise( contextMenu )
);
否则,如果未显示根项,则如果此根项没有子项,即当isLeaf()
返回true时,则该树可以为空。在这种情况下,绑定将是:
tree.contextMenuProperty().bind(
Bindings.when( tree.getRoot().leafProperty() )
.then( ( ContextMenu ) null )
.otherwise( contextMenu )
);