ich eine benutzerdefinierte Auswahlbox haben, die ich füllen dynamisch wie so hören:Wie Änderungen auf javafx Auswahlbox
public class CustomChoiceBox {
public void addItems(List<Item> items) {
// Populate choicebox
for(Item item : items) {
CustomOption choice = new CustomOption(String.valueOf(item.getId()), item);
this.getItems().add(choice);
}
}
}
CustomOption ist eine benutzerdefinierte Klasse wie folgt definiert:
public class CustomOption extends Observable{
private String key;
private Object value;
public CustomOption(String key, Object value) {
this.key = key;
this.value = value;
}
}
Ich möchte in der Lage zu hören, wenn der Benutzer eine andere Wahl trifft und den Wert dieser Wahl erhält. So habe ich einen Listener hinzugefügt:
myChoiceBox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<CustomOption>() {
@Override
public void changed(ObservableValue<? extends CustomOption> observable,
CustomOption oldValue, CustomOption newValue) {
System.out.println(newVaue.getValue());
}
});
jedoch dieser Code ausgeführt wird, nicht, wenn ich die Auswahl ändern. Ich habe auch versucht myChoiceBox.valueProperty()
Ist es 'CustomOption' oder' ChoiceBoxOption'? Und vermutlich soll es "öffentliche Klasse" sein. CustomChoiceBox erweitert ChoiceBox '(oder' ChoiceBox ', je nachdem, was Sie tatsächlich verwenden). Wenn diese behoben sind, gibt es offensichtlich keinen Fehler mit dem von Ihnen geposteten Code. Daher liegt das Problem wahrscheinlich an anderer Stelle. Sie sollten ein [MCVE] erstellen und Ihre Frage bearbeiten, um sie aufzunehmen. –