Hallo,
ich erstelle eine ObservableList die ich einer ChoiceBox übergebe. Wenn in die ObservableList ein Element eingefügt wird und in der ChoiceBox keines ausgewählt ist, dann soll automatisch das erste Element gewählt werden.
Folgend möchte / habe ich dies umgesetzt:
Jedoch bekomme ich eine IndexOutOfBoundsException und ich verstehe es einfach nicht warum.
Weiß jemand warum die Exception ist, bzw wie ich es anders umsetzen kann?
godi
ich erstelle eine ObservableList die ich einer ChoiceBox übergebe. Wenn in die ObservableList ein Element eingefügt wird und in der ChoiceBox keines ausgewählt ist, dann soll automatisch das erste Element gewählt werden.
Folgend möchte / habe ich dies umgesetzt:
Java:
package application;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.layout.BorderPane;
public class SelectDatabox extends Application {
@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
ChoiceBox<String> choiceBox = new ChoiceBox<>();
root.setCenter(choiceBox);
Scene scene = new Scene(root,400,400);
primaryStage.setScene(scene);
primaryStage.show();
ObservableList<String> items = FXCollections.observableArrayList();
choiceBox.setItems(items);
choiceBox.getItems().addListener((ListChangeListener<String>)(c) -> {
if ((choiceBox.getSelectionModel().getSelectedIndex() < 0) && (choiceBox.getItems().size() > 0)) {
choiceBox.getSelectionModel().selectFirst(); // TODO: There is a java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 ?
}
});
items.add("Test");
items.add("Test2");
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Jedoch bekomme ich eine IndexOutOfBoundsException und ich verstehe es einfach nicht warum.
Weiß jemand warum die Exception ist, bzw wie ich es anders umsetzen kann?
godi