Heim  >  Artikel  >  Java  >  ListView

ListView

PHPz
PHPzOriginal
2024-07-12 20:44:11697Durchsuche

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.

Image description

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.

Image description

Die folgenden Anweisungen erstellen eine Listenansicht mit sechs Elementen, wobei Mehrfachauswahl zulässig ist.

ObservableList Artikel =
FXCollections.observableArrayList("Item 1", "Item 2",
„Punkt 3“, „Punkt 4“, „Punkt 5“, „Punkt 6“);
ListView lv = new ListView<>(items);
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: "

  • lv.getSelectionModel().getSelectedIndices()); System.out.println("Ausgewählte Elemente: "
  • lv.getSelectionModel().getSelectedItems()); } });`

Diese anonyme innere Klasse kann mithilfe eines Lambda-Ausdrucks wie folgt vereinfacht werden:

`lv.getSelectionModel().selectedItemProperty().addListener(ov -> {
System.out.println("Ausgewählte Indizes: "

  • lv.getSelectionModel().getSelectedIndices()); System.out.println("Ausgewählte Elemente: "
  • lv.getSelectionModel().getSelectedItems()); });`

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.

Image description

Hier sind die wichtigsten Schritte im Programm:

  1. Erstellen Sie die Benutzeroberfläche. Erstellen Sie eine Listenansicht mit neun Ländernamen als Auswahlwerten und platzieren Sie die Listenansicht in einem Bildlaufbereich. Platzieren Sie den Bildlaufbereich links von einem Randbereich. Erstellen Sie neun Bildansichten, die zur Anzeige der Flaggenbilder der Länder verwendet werden. Erstellen Sie einen Flussbereich zur Aufnahme der Bildansichten und platzieren Sie den Bereich in der Mitte des Randbereichs.
  2. Verarbeiten Sie das Ereignis. Erstellen Sie einen Listener, um die Methode invalidated in der Schnittstelle InvalidationListener zu implementieren, um die Flaggenbildansichten der ausgewählten Länder im Bereich zu platzieren.
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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn