将对象添加到JList

Jim*_*_CS 6 java swing jlist

我有一个对象 - ArrayList<User> users包含一些用户对象.

public class User
{
    int id;
    String name;
    String location;
}
Run Code Online (Sandbox Code Playgroud)

我想把这个ArrayList放在一个JList中,这样它就会显示用户名 -

John
Mick
Sam
Joe
Run Code Online (Sandbox Code Playgroud)

---当我选择一个用户名时,会触发一个事件,让我使用相应的User对象执行某些操作.所以有人点击'Mick',我得到这样的代码(伪代码) -

public jListClicked(User user)
{
    int id = user.id;
    String name = user.name;
    String location = user.location;

    updateDatabase(id, name, location);
}
Run Code Online (Sandbox Code Playgroud)

我认为这可以使用JList ?? 毕竟我想象这就是为JList组件创建的.那么如何将一个像ArrayList这样的对象添加到JList中,以便我具备上述功能呢?

小智 5

JList接受其构造函数之一的Object []。您可以使用.toArray()函数从ArrayList中获取此信息。我相信(我可能错了……),如果您的User类覆盖了该toString()方法,则JList在显示对象时将使用此方法。

public class User
{
    int id;
    String name;
    String location;

    public String toString() {
      return name;
    }
}
Run Code Online (Sandbox Code Playgroud)

我建议阅读Java文档中有关JList的文档。它有一个示例,说明如何构建自定义单元格渲染器以按希望的方式在列表中显示项目。很容易遵循。它还有一个如何创建鼠标单击侦听器的示例。大多数情况下,您应该能够复制/粘贴此内容。

http://docs.oracle.com/javase/6/docs/api/

  • -1用于出于显示原因而覆盖toString。定制视觉表示的Swing方法是定制ListCellRenderer。 (3认同)