Paparan senarai ialah kawalan yang pada asasnya melaksanakan fungsi yang sama seperti kotak kombo, tetapi ia membolehkan pengguna memilih satu nilai atau berbilang nilai.
Rajah di bawah menyenaraikan beberapa sifat dan pembina yang kerap digunakan dalam ListView. ListView ditakrifkan sebagai kelas generik. Jenis generik T menentukan jenis elemen untuk elemen yang disimpan dalam paparan senarai.
Kaedah getSelectionModel() mengembalikan tika SelectionModel, yang mengandungi kaedah untuk menetapkan mod pemilihan dan mendapatkan indeks dan item yang dipilih. Mod pemilihan ditakrifkan dalam salah satu daripada dua pemalar SelectionMode.MULTIPLE dan SelectionMode.SINGLE, yang menunjukkan sama ada satu item atau berbilang item boleh dipilih. Nilai lalai ialah SelectionMode.SINGLE. Rajah di bawah (a) menunjukkan satu pilihan dan Rajah di bawah (b) dan (c) menunjukkan berbilang pilihan.
Pernyataan berikut mencipta paparan senarai enam item dengan berbilang pilihan dibenarkan.
ObservableList
FXCollections.observableArrayList("Item 1", "Item 2",
"Item 3", "Item 4", "Item 5", "Item 6");
ListView
lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
Model pemilihan dalam paparan senarai mempunyai sifat selectedItemProperty, yang merupakan contoh Boleh Diperhatikan. Anda boleh menambah pendengar pada harta ini untuk mengendalikan perubahan sifat seperti berikut:
`lv.getSelectionModel().selectedItemProperty().addListener(
InvalidationListener() baharu {
kekosongan awam tidak sah(Boleh diperhatikan ov) {
System.out.println("Indeks yang dipilih: "
Kelas dalaman tanpa nama ini boleh dipermudahkan menggunakan ungkapan lambda seperti berikut:
`lv.getSelectionModel().selectedItemProperty().addListener(ov -> {
System.out.println("Indeks yang dipilih: "
Kod di bawah memberikan program yang membolehkan pengguna memilih negara dalam paparan senarai dan memaparkan bendera negara yang dipilih dalam paparan imej. Rajah di bawah menunjukkan contoh larian program.
Berikut ialah langkah utama dalam program:
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); } }
Program ini mencipta tatasusunan rentetan untuk negara (baris 15) dan tatasusunan sembilan paparan imej untuk memaparkan imej bendera untuk sembilan negara (baris 18–25) dalam susunan yang sama seperti dalam tatasusunan negara. Item dalam paparan senarai adalah daripada tatasusunan negara (baris 29). Oleh itu, indeks 0 tatasusunan paparan imej sepadan dengan negara pertama dalam paparan senarai.
Paparan senarai diletakkan dalam anak tetingkap tatal (baris 36) supaya ia boleh ditatal apabila bilangan item dalam senarai melangkaui kawasan tontonan.
Secara lalai, mod pemilihan paparan senarai adalah tunggal. Mod pemilihan untuk paparan senarai ditetapkan kepada berbilang (baris 31), yang membolehkan pengguna memilih berbilang item dalam paparan senarai. Apabila pengguna memilih negara dalam paparan senarai, pengendali pendengar (baris 39–44) ialah
dilaksanakan, yang mendapat indeks item yang dipilih dan menambahkan paparan imej yang sepadan pada anak tetingkap aliran.
Atas ialah kandungan terperinci ListView. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!