gpt4 book ai didi

java - 在 Jlist 中使用 Jbutton ActionPerformed 方法创建的对象

转载 作者:行者123 更新时间:2023-12-02 03:09:45 24 4
gpt4 key购买 nike

我正在尝试设计一个用户界面,允许用户将包含人员信息的文件加载到系统中,然后访问有关单个人员的信息。我有一个方法 getpersons 从 ArrayList 获取信息并创建一个对象 PersonList。 ArrayList 是通过从 .txt 文件读取有关人​​员的信息来生成的。 PersonList 再次包含单个 Person 对象。现在我创建了一个 JButton,并在 EventListener 方法中调用第一个方法。因此,基本上,单击按钮后,我的程序就会读取文件并创建一个对象 PersonList。然后我想循环访问 PersonList 对象并将 person 对象添加到 jlist 中。单击 J 列表中的对象后,我想在 JTextArea 中显示 person 对象中包含的信息。现在我的第一个想法是将 person 对象直接传递到 Jlist。但我不知道如何让我的 JList 接受我的特定人员对象。

person 类看起来有点像这样:

public class Person 
{

private String personname;
private String personage;
private String personaddress;
.....
}

我的 JButton 代码是这样的

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
ArrayList<String> personlist = readFile("data/persons.txt");
PersonList persons = getpersons(personlist);


for(int i = 0; i < persons.getsize(); i++)
{

JList.addItem(persons.getperson(i));
}
}

另一个想法是简单地显示人名,它是 Jlist 中的字符串。然后我会将用户在 Jlist 中单击的姓名与 PersonList 对象中我的人员进行比较,并在文本区域中显示相应人员的信息。但这需要我从私有(private)(且不能更改为公共(public))的 jButton1ActionPerformed 方法中获取 PersonList 对象,并将其传递给 JListActionPerformed 方法。任何帮助,将不胜感激我不确定这是否是一个好方法。如果您有更好的方法来做到这一点的建议,我也很高兴。

最佳答案

Then I would like to loop through the PersonList object and add person objects to the jlist.

您可以只在 JTable 中显示 Person 对象。然后您可以在不同的列中显示有关 Person 的所有信息。您需要为此创建一个自定义 TableModel。

查看Table Row Model有关如何完成此操作的示例。

But I don't know how to get my JList to accept my specific person objects.

您可以将任何对象添加到 JList 使用的 ListModel 中,因此您可以将 Person 对象添加到 JList 与将 String 添加到 JList 的方式相同。

JList 使用渲染器来显示列表中的对象。默认渲染器仅调用对象的 toString() 方法来获取要显示的文本。因此,一个简单的解决方案是在您的 Person 对象中实现一个 toString() 方法,以返回您想要在列表中显示的 String

但是,使用 toString() 方法来包含应用程序使用的数据并不是一个好主意,因此更好的解决方案是创建一个自定义渲染器来显示数据。

阅读 Swing 教程中关于 Writing a Custom Renderer 的部分了解更多信息和示例。

关于java - 在 Jlist 中使用 Jbutton ActionPerformed 方法创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41245437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com