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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-24 18:47:55380ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。