Run code:
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class JavaApplication44 extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
VBox vb = new VBox();
ComboBox cb = new ComboBox();
cb.getItems().addAll(1, 2, 3);
cb.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>(){
@Override
public void changed(ObservableValue<? extends Number> ov, Number t, Number t1) {
System.out.println("New value: <" + t1 + ">");
}
});
cb.getSelectionModel().selectedItemProperty().addListener(new ChangeListener(){
@Override
public void changed(ObservableValue ov, Object t, Object t1) {
System.out.println("New value: <" + t1 + ">");
}
});
vb.getChildren().add(cb);
Scene scene = new Scene(vb, 300, 300);
stage.setScene(scene);
stage.show();
}
}
Press F4,
Press down, down, to select the second item,
Press Enter,
I see output:
New value: <1>
New value: <0>
New value: <2>
New value: <1>
New value: <>
That means, that selected item was not selected and selected item is "". Empty selection is shown after pressing of Enter.
It is not reproducible with space key.
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class JavaApplication44 extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
VBox vb = new VBox();
ComboBox cb = new ComboBox();
cb.getItems().addAll(1, 2, 3);
cb.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>(){
@Override
public void changed(ObservableValue<? extends Number> ov, Number t, Number t1) {
System.out.println("New value: <" + t1 + ">");
}
});
cb.getSelectionModel().selectedItemProperty().addListener(new ChangeListener(){
@Override
public void changed(ObservableValue ov, Object t, Object t1) {
System.out.println("New value: <" + t1 + ">");
}
});
vb.getChildren().add(cb);
Scene scene = new Scene(vb, 300, 300);
stage.setScene(scene);
stage.show();
}
}
Press F4,
Press down, down, to select the second item,
Press Enter,
I see output:
New value: <1>
New value: <0>
New value: <2>
New value: <1>
New value: <>
That means, that selected item was not selected and selected item is "". Empty selection is shown after pressing of Enter.
It is not reproducible with space key.