List View in JavaFX
In diesem Artikel behandeln wir einen der verschiedenen Views, und zwar List View in JavaFX. Dabei handelt es sich um einen View, in dem man Listenelemente einfügen kann.
Anlegen eines List View in JavaFX
ListView<String> list = new ListView<>();
ObservableList<String> items =FXCollections.observableArrayList (
"Hund", "Katze", "Maus", "Pikatchu");
list.setItems(items);
Das sieht dann folgendermaßen aus:
[image img_id=”6312″ alt=”List View in JavaFX” width=”274″ height=”300″]
Wir haben also mit unserer ObservableList voller Strings unserem ListView die Liste von Items zugewiesen. Dabei trennen wir im observableArrayList einfach nur die Listenelemente mit einem Komma. Ziemlich einfach bisher.
Wir können unsere Liste jedoch noch weiter anpassen. Das machen wir z.B. mit der setPrefSize Funktion
list.setPrefSize(200.0, 200.0);
Damit machen wir die Liste 200 Pixel breit und 200 Pixel hoch.
Aktuell können wir nur einzelne Elemente der Liste auswählen. Wenn wir jedoch mehrere auswählen möchten, benötigen wir lediglich die folgende Methode:
list.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
Listen können aber auch Horizontal angeordnet werden, mit der setOrientation Methode
list.setOrientation(Orientation.HORIZONTAL);
Aktionen des List View in JavaFX erkennen und verwenden
Schauen wir uns mal an wie man Aktionen eines List View in JavaFX nutzen kann.
// wir legen unser GridPane an
GridPane grid = new GridPane();
// weisen das Padding (interner Abstand) zu
grid.setPadding(new Insets(10, 10, 10, 10));
// und fügen einen kleinen Außenabstand hinzu
grid.setVgap(10);
grid.setHgap(10);
ListView list = new ListView<>();
ObservableList items =FXCollections.observableArrayList (
"Hund", "Katze", "Maus", "Pikachu");
list.setItems(items);
//list.setPrefSize(200.0, 200.0);
list.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
//list.setOrientation(Orientation.HORIZONTAL);
Label chosenLabel = new Label("Bitte wähle eines der Objekte");
list.getSelectionModel().selectedItemProperty().addListener(
(ObservableValue<? extends String> ov, String old_val,
String new_val) -> {
chosenLabel.setText("Angewählt: " + new_val);
});
GridPane.setConstraints(chosenLabel, 0,1);
GridPane.setConstraints(list, 0,0);
grid.getChildren().addAll(list,chosenLabel);
Scene scene = new Scene(grid,300,300);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
Der Code befindet sich in der start Methode und ergibt folgendes Resultat:
[image img_id=”6313″ alt=”List View in JavaFX klick auswahl erkennen” width=”276″ height=”300″]
Du siehst also, mit recht wenig Aufwand kann man eine super Liste erstellen und auslesen, welches Element angeklickt wurde.
Für mehr Details zu List View in JavaFX empfehle ich die Oracle Dokumentation.