Eine Listenansicht ist ein Steuerelement, das im Grunde die gleiche Funktion wie ein Kombinationsfeld ausführt, es dem Benutzer jedoch ermöglicht, einen einzelnen Wert oder mehrere Werte auszuwählen.
Die folgende Abbildung listet mehrere häufig verwendete Eigenschaften und Konstruktoren in ListView auf. ListView ist als generische Klasse definiert. Der generische Typ T gibt den Elementtyp für die in einer Listenansicht gespeicherten Elemente an.
Die Methode getSelectionModel() gibt eine Instanz von SelectionModel zurück, die die Methoden zum Festlegen eines Auswahlmodus und zum Abrufen ausgewählter Indizes und Elemente enthält. Der Auswahlmodus wird in einer der beiden Konstanten SelectionMode.MULTIPLE und SelectionMode.SINGLE definiert, die angibt, ob ein einzelnes Element oder mehrere Elemente ausgewählt werden können. Der Standardwert ist SelectionMode.SINGLE. Die Abbildung unten (a) zeigt eine einzelne Auswahl und die Abbildung unten (b) und (c) zeigen mehrere Auswahlen.
Die folgenden Anweisungen erstellen eine Listenansicht mit sechs Elementen, wobei Mehrfachauswahl zulässig ist.
ObservableList
FXCollections.observableArrayList("Item 1", "Item 2",
„Punkt 3“, „Punkt 4“, „Punkt 5“, „Punkt 6“);
ListView
lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
Das Auswahlmodell in einer Listenansicht verfügt über die Eigenschaft selectedItemProperty, die eine Instanz von Observable ist. Sie können dieser Eigenschaft einen Listener hinzufügen, um die Eigenschaftsänderung wie folgt zu verarbeiten:
`lv.getSelectionModel().selectedItemProperty().addListener(
neuer InvalidationListener() {
öffentliche Nichtigkeit ungültig gemacht(Observable ov) {
System.out.println("Ausgewählte Indizes: "
Diese anonyme innere Klasse kann mithilfe eines Lambda-Ausdrucks wie folgt vereinfacht werden:
`lv.getSelectionModel().selectedItemProperty().addListener(ov -> {
System.out.println("Ausgewählte Indizes: "
Der folgende Code stellt ein Programm bereit, mit dem Benutzer die Länder in einer Listenansicht auswählen und die Flaggen der ausgewählten Länder in den Bildansichten anzeigen können. Die folgende Abbildung zeigt einen Beispiellauf des Programms.
Hier sind die wichtigsten Schritte im Programm:
package application; import javafx.application.Application; import javafx.stage.Stage; import javafx.collections.FXCollections; import javafx.scene.Scene; import javafx.scene.control.ListView; import javafx.scene.control.ScrollPane; import javafx.scene.control.SelectionMode; import javafx.scene.image.ImageView; import javafx.scene.layout.BorderPane; import javafx.scene.layout.FlowPane; public class ListViewDemo extends Application { // Declare an array of Strings for flag titles private String[] flagTitles = {"Canada", "China", "Denmark", "France", "Germany", "India", "Norway", "United Kingdom", "United States of America"}; // Declare an ImageView array for the national flags of 9 countries private ImageView[] ImageViews = {new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/lo.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"), new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/ke.jpg"),}; @Override // Override the start method in the Application class public void start(Stage primaryStage) { ListView<String> lv = new ListView<>(FXCollections.observableArrayList(flagTitles)); lv.setPrefSize(400, 400); lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); // Create a pane to hold image views FlowPane imagePane = new FlowPane(10, 10); BorderPane pane = new BorderPane(); pane.setLeft(new ScrollPane(lv)); pane.setCenter(imagePane); lv.getSelectionModel().selectedIndexProperty().addListener(ov -> { imagePane.getChildren().clear(); for(Integer i: lv.getSelectionModel().getSelectedIndices()) { imagePane.getChildren().add(ImageViews[i]); } }); // Create a scene and place it in the stage Scene scene = new Scene(pane, 450, 170); primaryStage.setTitle("ListViewDemo"); // Set the stage title primaryStage.setScene(scene); // Place the scene in the stage primaryStage.show(); // Display the stage } public static void main(String[] args) { Application.launch(args); } }
Das Programm erstellt ein Array von Zeichenfolgen für Länder (Zeilen 15) und ein Array von neun Bildansichten zur Anzeige von Flaggenbildern für neun Länder (Zeilen 18–25) in derselben Reihenfolge wie im Länder-Array. Die Elemente in der Listenansicht stammen aus der Ländergruppe (Zeile 29). Somit entspricht der Index 0 des Bildansichtsarrays dem ersten Land in der Listenansicht.
Die Listenansicht wird in einem Bildlaufbereich (Zeile 36) platziert, sodass ein Bildlauf möglich ist, wenn die Anzahl der Elemente in der Liste über den Anzeigebereich hinausgeht.
Standardmäßig ist der Auswahlmodus der Listenansicht einfach. Der Auswahlmodus für die Listenansicht ist auf „Mehrere“ (Zeile 31) eingestellt, wodurch der Benutzer mehrere Elemente in der Listenansicht auswählen kann. Wenn der Benutzer Länder in der Listenansicht auswählt, lautet der Handler des Listeners (Zeilen 39–44)
ausgeführt, wodurch die Indizes der ausgewählten Elemente abgerufen und ihre entsprechenden Bildansichten zum Flussbereich hinzugefügt werden.
Das obige ist der detaillierte Inhalt vonListView. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!