【问题标题】:Using object created in Jbutton ActionPerformed method in Jlist使用在 Jlist 中的 Jbutton ActionPerformed 方法中创建的对象
【发布时间】:2017-05-05 20:28:57
【问题描述】:

我正在尝试设计一个用户界面,允许用户将包含有关人员信息的文件加载到系统中,然后访问有关单个人员的信息。 我有一个从 ArrayList 获取信息并创建对象 PersonList 的方法 getpersons。 ArrayList 是通过从 .txt 文件中读取有关人​​员的信息而生成的。 PersonList 再次包含单个 Person 对象。 现在我创建了一个 JButton,并在 EventListener 方法中调用了第一个方法。 所以基本上在单击按钮时,我的程序会读取文件并创建一个对象 PersonList。 然后我想遍历 PersonList 对象并将人员对象添加到 jlist。单击 J 列表中的对象后,我想在 JTextArea 中显示人员对象中包含的信息。现在我的第一个想法是将 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 对象中的人员进行比较,并在文本区域中显示相应人员的信息。但这需要我从 jButton1ActionPerformed 方法中获取 PersonList 对象,该方法是私有的(并且不能更改为公共的)并将其传递给 JListActionPerformed 方法。 任何帮助,将不胜感激 我不确定这是否是一个好方法。如果您有更好的方法来执行此操作,我也会很高兴。

【问题讨论】:

  • 当您尝试发布的代码时会发生什么? (顺便说一句,最后是一个显示努力的问题,所以谢谢你:P)

标签: java swing object jbutton private


【解决方案1】:

然后我想循环遍历 PersonList 对象并将人员对象添加到 jlist 中。

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

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

但我不知道如何让我的 JList 接受我的特定人员对象。

您可以将任何对象添加到JList 使用的ListModel,因此您可以将Person 对象添加到JList,就像将String 添加到JList 一样。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 2013-03-31
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多