JavaFXのカスタムオブジェクトを使用してListViewに特定のオブジェクトプロパティを表示するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-25 05:22:02
オリジナル
806 人が閲覧しました

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

JavaFX でカスタム オブジェクトが ListView にデータを設定する方法

JavaFX では、ObservableList を使用して ListView にデータを設定できます。カスタム オブジェクトを操作する場合、ListView がオブジェクトの特定のプロパティではなくオブジェクト自体を表示するときに一般的な問題が発生します。

この問題を解決するには、Cell Factory を利用できます。その方法は次のとおりです。

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());
        }
    }
});
ログイン後にコピー

カスタム セル ファクトリを提供することで、ListView が各項目をレンダリングする方法を指定できます。この場合、ListView に対して、各 Word オブジェクトの wordString プロパティを表示し、必要な出力を提供するように指示します。

完全なサンプル アプリケーションを次に示します。

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);
    }
}
ログイン後にコピー

この拡張ソリューションは、ListView にカスタム オブジェクトを設定しながら、それらのオブジェクトの特定のプロパティを表示するという要件に対応します。

以上がJavaFXのカスタムオブジェクトを使用してListViewに特定のオブジェクトプロパティを表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!