Le Tutoriel de JavaFX ListView
View more Tutorials:
JavaFX ListView affiche ses éléments (Items) verticalement ou horizontalement.
Voici une ListView vertical qui comprend 3 éléments (item).

ListView horizontal.
// Default ListView is vertical. // Set ListView with horizontal direction. listView.setOrientation(Orientation.HORIZONTAL);


ListViewDemo.java
package org.o7planning.javafx.listview; import org.o7planning.javafx.model.Book; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.control.ListView; import javafx.scene.control.SelectionMode; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class ListViewDemo extends Application { @Override public void start(Stage stage) { Book book1 = new Book(1L, "J01", "Java IO Tutorial"); Book book2 = new Book(2L, "J02", "Java Enums Tutorial"); Book book3 = new Book(2L, "C01", "C# Tutorial for Beginners"); // To Creating a Observable List ObservableList<Book> books = FXCollections.observableArrayList(book1, book2, book3); // Create a ListView ListView<Book> listView = new ListView<Book>(books); // To set multiple selection model listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); // Select item at index = 1,2 listView.getSelectionModel().selectIndices(1, 2); // Focus listView.getFocusModel().focus(1); StackPane root = new StackPane(); root.getChildren().add(listView); stage.setTitle("ListView (o7planning.org)"); Scene scene = new Scene(root, 350, 200); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
Book.java
package org.o7planning.javafx.model; public class Book { private Long id; private String code; private String name; public Book(Long id, String code, String name) { this.id = id; this.code = code; this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return this.name; } }
Exécutez l'exemple :


ListViewChangeListenerExample.java
package org.o7planning.javafx.listview; import org.o7planning.javafx.model.Book; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.ListView; import javafx.scene.control.SelectionMode; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class ListViewChangeListenerExample extends Application { @Override public void start(Stage stage) { Book book1 = new Book(1L, "J01", "Java IO Tutorial"); Book book2 = new Book(2L, "J02", "Java Enums Tutorial"); Book book3 = new Book(2L, "C01", "C# Tutorial for Beginners"); Label label = new Label(); // To Creating a Observable List ObservableList<Book> books = FXCollections.observableArrayList(book1, book2, book3); // Create a ListView ListView<Book> listView = new ListView<Book>(books); // Only allowed to select single row in the ListView. listView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Book>() { @Override public void changed(ObservableValue<? extends Book> observable, Book oldValue, Book newValue) { label.setText("OLD: " + oldValue + ", NEW: " + newValue); } }); VBox root = new VBox(); root.getChildren().addAll(listView, label); stage.setTitle("ListView & ChangeListener (o7planning.org)"); Scene scene = new Scene(root, 450, 200); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
L'événement base sur Index :

ListViewChangeListenerExample2.java
package org.o7planning.javafx.listview; import org.o7planning.javafx.model.Book; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.ListView; import javafx.scene.control.SelectionMode; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class ListViewChangeListenerExample2 extends Application { @Override public void start(Stage stage) { Book book1 = new Book(1L, "J01", "Java IO Tutorial"); Book book2 = new Book(2L, "J02", "Java Enums Tutorial"); Book book3 = new Book(2L, "C01", "C# Tutorial for Beginners"); Label label = new Label(); // To Creating a Observable List ObservableList<Book> books = FXCollections.observableArrayList(book1, book2, book3); // Create a ListView ListView<Book> listView = new ListView<Book>(books); // Only allowed to select single row in the ListView. listView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); listView.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() { @Override public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { label.setText("OLD Index: " + oldValue + ", NEW Index: " + newValue); } }); VBox root = new VBox(); root.getChildren().addAll(listView, label); stage.setTitle("ListView & ChangeListener (o7planning.org)"); Scene scene = new Scene(root, 450, 200); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }