Per this Link habe ich Kontextmenü auf meine Tableview mit dem folgenden Muster hinzugefügt -JavaFX Tableview Reihe contextmenu Bindungen
row.contextMenuProperty().bind(
Bindings.when(Bindings.isNotNull(row.itemProperty()))
.then(rowMenu)
.otherwise((ContextMenu)null));
Ich habe eine Verpflichtung, wo die mehrere Zeilen ausgewählt werden können (SelectionMode.MULTIPLE
) und ich muss Zeigen Sie das Kontextmenü an, wenn eine Zeileneigenschaft mit einem bestimmten Wert übereinstimmt. Ich habe dies aber kein Glück versucht -
// Show menu only if row is not null and value property == "foo"
row.contextMenuProperty().bind(
Bindings.when(Bindings.and(Bindings.isNotNull(row.itemProperty()), Bindings.equal("foo", row.getItem().value))
.then(rowMenu)
.otherwise((ContextMenu)null));
UPDATE
Ich habe dies über einen Zuhörer arbeiten -
row.emptyProperty().addListener((obs, wasEmpty, isEmpty) -> {
if (isEmpty) {
row.setContextMenu(null);
} else {
if (row.getItem().name.get().equals("foo")) {
row.setContextMenu(contextMenu);
}
}
});
Frage - Gibt es eine Möglichkeit, dies die Bindings
API zu erreichen ?
Die Bindings.equal Signatur erfordert, dass der 2. arg ein Observable ist kein String –
Also lassen Sie die ".get()" – DaveB
Hast du meine Frage gelesen? –