Ich versuche, die Auswahl eines ComboBox
wie folgt zurück:JavaFX ComboBox OnChangeListener Rollback Änderung
// private ListView<MyEntityType> f_lItems
f_lItems.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Object>() {
@Override
public void changed(ObservableValue<?> ov, Object t, Object t1) {
if (t1 != null && t1 instanceof MyEntityType) {
MyEntityType pv = (MyEntityType) t1;
// do some condition testing
if (condition) {
// accept
} else
// roll back to previous item
f_lItems.getSelectionModel().select((MyEntityType) t);
}
}
}
});
So, nachdem ich diese Ausnahme erhalten versuchen, die Liste auf den alten Wert zurückgesetzt werden:
Exception in thread "JavaFX Application Thread" java.lang.IndexOutOfBoundsException
at com.sun.javafx.scene.control.ReadOnlyUnbackedObservableList.subList(Unknown Source)
at javafx.collections.ListChangeListener$Change.getAddedSubList(Unknown Source)
at com.sun.javafx.scene.control.behavior.ListViewBehavior.lambda$new$177(Unknown Source)
at javafx.collections.WeakListChangeListener.onChanged(Unknown Source)
at com.sun.javafx.collections.ListListenerHelper$Generic.fireValueChangedEvent(Unknown Source)
Wie es scheint, bekomme ich nicht das zugrunde liegende Verhalten von List
s/ObservableList
s für diesen Fall.
Hat jemand Vorschläge, wie ich das schaffen könnte?
Vielen Dank im Voraus Adam
Was genau meinen Sie mit "reset die Auswahl einer' ComboBox'? Soll die 'ComboBox' das ausgewählte Element standardmäßig jedes Mal haben, wenn Sie ein anderes auswählen? – SpaceCore186
Was Sie machen wollen ? Geben Sie ein Beispiel, mit diesem Ansatz können Sie StackOverflowError Fehler haben ... – GOXR3PLUS
Sagen wir, der ausgewählte Index war 4. Der Benutzer hat den Index auf etwa 6 gesetzt. In der geänderten Handler möchte ich den Index wieder auf 4, weil von einigen internen Gründen. Wirklich möchte ich verwirklichen das "sind Sie wirklich sicher, dass Sie Ihre Auswahl" Sache ändern möchten. Andererseits dachte ich, dass dieses nicht der rechte Weg irgendwie sein sollte, es zu tun. Möglicherweise muss ich verhindern das veränderte Ereignis an erster Stelle – PAWL