Rumah > Java > javaTutorial > Bagaimana untuk Memaparkan Sifat Objek Tertentu dalam ListView Dengan Objek Tersuai dalam JavaFX?

Bagaimana untuk Memaparkan Sifat Objek Tertentu dalam ListView Dengan Objek Tersuai dalam JavaFX?

Barbara Streisand
Lepaskan: 2024-10-25 05:22:02
asal
880 orang telah melayarinya

How to Display Specific Object Properties in a ListView With Custom Objects in JavaFX?

Cara Objek Tersuai Boleh Mengisi ListView dalam JavaFX

Dalam JavaFX, ListView boleh diisi dengan data dengan menggunakan ObservableList. Apabila bekerja dengan objek tersuai, cabaran biasa timbul apabila ListView memaparkan objek itu sendiri dan bukannya sifat khusus daripada objek.

Untuk menyelesaikan isu ini, anda boleh memanfaatkan Kilang Sel. Begini caranya:

listViewOfWords.setCellFactory(param -> new ListCell<Word>() {
    @Override
    protected void updateItem(Word item, boolean empty) {
        super.updateItem(item, empty);

        if (empty || item == null || item.getWord() == null) {
            setText(null);
        } else {
            setText(item.getWord());
        }
    }
});
Salin selepas log masuk

Dengan menyediakan kilang sel tersuai, anda boleh menentukan cara ListView memaparkan setiap item. Dalam kes ini, kami mengarahkan ListView untuk memaparkan sifat wordString bagi setiap objek Word, memberikan output yang diingini.

Berikut ialah contoh aplikasi lengkap:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage stage) {
        // Create a list of Word objects
        ObservableList<Word> wordsList = FXCollections.observableArrayList();
        wordsList.add(new Word("First Word", "Definition of First Word"));
        wordsList.add(new Word("Second Word", "Definition of Second Word"));
        wordsList.add(new Word("Third Word", "Definition of Third Word"));

        // Create a ListView instance
        ListView<Word> listView = new ListView<>(wordsList);

        // Set the cell factory to display the wordString property
        listView.setCellFactory(param -> new ListCell<Word>() {
            @Override
            protected void updateItem(Word item, boolean empty) {
                super.updateItem(item, empty);

                if (empty || item == null || item.getWord() == null) {
                    setText(null);
                } else {
                    setText(item.getWord());
                }
            }
        });

        // Create a scene to display the ListView
        VBox layout = new VBox(10);
        layout.setPadding(new Insets(10));
        layout.getChildren().add(listView);

        Scene scene = new Scene(layout);
        stage.setScene(scene);
        stage.show();
    }

    public static class Word {
        private String word;
        private String definition;

        public Word(String word, String definition) {
            this.word = word;
            this.definition = definition;
        }

        public String getWord() {
            return word;
        }

        public String getDefinition() {
            return definition;
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Salin selepas log masuk

Penyelesaian dipertingkat ini menangani keperluan anda untuk mengisi ListView dengan objek tersuai sambil memaparkan sifat khusus daripada objek tersebut.

Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Sifat Objek Tertentu dalam ListView Dengan Objek Tersuai dalam JavaFX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan