Rumah  >  Artikel  >  Java  >  ListView

ListView

PHPz
PHPzasal
2024-07-12 20:44:11698semak imbas

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.

Image description

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.

Image description

Pernyataan berikut mencipta paparan senarai enam item dengan berbilang pilihan dibenarkan.

ObservableList item =
FXCollections.observableArrayList("Item 1", "Item 2",
"Item 3", "Item 4", "Item 5", "Item 6");
ListView lv = ListView baharu<>(item);
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: "

  • lv.getSelectionModel().getSelectedIndices()); System.out.println("Item yang dipilih: "
  • lv.getSelectionModel().getSelectedItems()); } });`

Kelas dalaman tanpa nama ini boleh dipermudahkan menggunakan ungkapan lambda seperti berikut:

`lv.getSelectionModel().selectedItemProperty().addListener(ov -> {
System.out.println("Indeks yang dipilih: "

  • lv.getSelectionModel().getSelectedIndices()); System.out.println("Item yang dipilih: "
  • lv.getSelectionModel().getSelectedItems()); });`

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.

Image description

Berikut ialah langkah utama dalam program:

  1. Buat antara muka pengguna. Buat paparan senarai dengan sembilan nama negara sebagai nilai pilihan, dan letakkan paparan senarai di dalam anak tetingkap skrol. Letakkan anak tetingkap tatal di sebelah kiri anak tetingkap sempadan. Cipta sembilan paparan imej untuk digunakan untuk memaparkan imej bendera negara. Buat anak tetingkap aliran untuk menahan paparan imej dan letakkan anak tetingkap di tengah anak tetingkap sempadan.
  2. Proses acara. Cipta pendengar untuk melaksanakan kaedah tidak sah dalam antara muka InvalidationListener untuk meletakkan paparan imej bendera negara yang dipilih dalam anak tetingkap.
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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn