如何使用自定义对象在 JavaFX 中填充 ListView?
我对Java,JavaFX和一般的编程有点陌生,我有一个问题让我的大脑崩溃。
在我查找的大多数有关填充ListView的教程中(更具体地说,使用ObservableArrayList),最简单的方法是从ObservableList of Strings制作它,如下所示:
ObservableList<String> wordsList = FXCollections.observableArrayList("First word","Second word", "Third word", "Etc.");
ListView<String> listViewOfStrings = new ListView<>(wordsList);
但我不想使用字符串。我想使用我制作的名为Words的自定义对象:
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);
每个 Word 对象只有 2 个属性:wordString(单词的字符串)和定义(另一个字符串是单词的定义)。我为两者都有getter和setters。
您可以看到这是怎么回事 - 代码编译和工作,但是当我在应用程序中显示它时,它不是在ListView中显示每个单词的标题,而是将Word对象本身显示为字符串!
具体来说,我的问题是,有没有一种简单的方法来重写它:
ListView<Word> listViewOfWords = new ListView<>(wordsList);
以这种方式,它不是直接从wordsList中获取Words,而是访问我的可观察ArrayList的每个Word中的wordString属性?
需要明确的是,这不是针对android的,单词列表最终会被更改,保存和加载,所以我不能只是制作另一个数组来保存单词Strings。我已经在网上做了一些研究,似乎有一个叫做“细胞工厂”的东西,但对于一个看似如此简单的问题来说,它似乎不必要地复杂,正如我之前所说,在编程方面,我有点新手。
任何人都可以帮忙吗?这是我第一次来这里,所以如果我没有包含足够的代码或者我做错了什么,我很抱歉。