如何在Java中创建自定义列表模型

时间:2012-05-04 17:23:59

标签: java swing jlist

我尝试创建显示联系人的列表,每个列表项在一行显示名称,第二行显示电话号码,也可能是图像或图标。我正在考虑使用两个标签,但我可以弄清楚如何使用自定义列表模型来实现它。

我的第一次尝试是在列表中添加一个包含我想要的信息的Panel对象,然后将其添加到defualt列表模型的实例中,但只显示列表中的类名。

    DefaultListModel Clistmodel = new DefaultListModel();//
    Clistmodel.addElement(Contact);//Contact is an JPanel object
    GroupList.setModel(Clistmodel);//GroupList is the List object

这根本没有用,然后我才知道默认列表模型只知道如何渲染我认为的字符串,所以我必须创建一个自定义列表模型,或者自定义ListCellRenderer,我不会这样做。我真的知道哪个能解决问题。

1 个答案:

答案 0 :(得分:5)

您的问题询问如何创建自定义列表模型,但是,这不是您需要的(我不认为),因为DefaultListModel可以很好地为您工作。相反,您将需要处理渲染器。您需要创建一个非GUI类来保存每个项目将显示的信息,可能是您的Contact类,然后创建一个在其DefaultListModel中保存它的JList。

然后,您将创建一个自定义列表单元格渲染器以显示多行的信息 - 可能是JTextArea,或者是一个在GridLayout中包含两个JLabel的JPanel。请理解渲染器不显示实际的底层组件,而是更类似于您尝试显示的任何组件的标记图像,因此它不会像实际组件那样具有完整的行为。这将需要工作,但writing a renderer section of the tutorial linked to by user714965将告诉您如何执行此操作。

请试一试,然后如果您仍然遇到困难,请回复您的代码,错误和问题,我们将能够更好地为您提供具体的帮助。