JavaFX ListViewでカスタムオブジェクトを表示するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-24 18:47:55
オリジナル
478 人が閲覧しました

How to Display Custom Objects in a JavaFX ListView?

JavaFX での ListView へのカスタム オブジェクトの設定

JavaFX を使用する場合、ListView にカスタム オブジェクトを設定するには、String を使用する場合とは若干異なるアプローチが必要です。この記事では、この問題の詳細な解決策を提供します。

問題ステートメント

JavaFX でカスタム オブジェクトの ObservableArrayList を使用すると、ListView は、オブジェクトを抽出して表示するのではなく、オブジェクト自体を文字列として表示します。

解決策

解決策は、ListView で Cell Factory を使用することです。 Cell Factory を使用すると、ListView 内の各セルのプレゼンテーションをカスタマイズできます。

ステップ 1: Cell Factory を作成する

ListCell を拡張する新しいクラスを作成します。この例では、それを WordCell と呼びます。

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

ステップ 2: ListView でセル ファクトリを設定する

WordCell クラスをセル ファクトリとして割り当てます。 ListView.

ListView<Word> listViewOfWords = new ListView<>(wordsList);
listViewOfWords.setCellFactory(listViewOfWords.new WordCell());
ログイン後にコピー

サンプル アプリケーション

ここで説明されているアプローチを示すサンプル アプリケーションです。

import javafx.application.Application;
import javafx.collections.*;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.stage.Stage;

public class ListViewCustomObject extends Application {

    @Override
    public void start(Stage stage) {
        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"));

        ListView<Word> listViewOfWords = new ListView<>(wordsList);
        listViewOfWords.setCellFactory(listViewOfWords.new WordCell());

        stage.setScene(new Scene(listViewOfWords));
        stage.show();
    }

    public static class Word {
        private final String word;
        private final 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 までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート