2014-01-19 20 views
0

我试图填充一个jList,我希望它显示一个名称,但也存储列表中的每个项目的ID(这不显示)。在jList/listModel中访问一个对象的元素

我创建了一个列表模型,并将每个元素添加为一个对象。在对象保存一个int值(ID)和一个字符串值(名称):

doorListModel.addElement(nextDoor); 

一旦所有的元素都被加入,然后我发送这个模式向的jList:

jList1.setModel(doorListModel); 

当你运行程序jList似乎只显示每个元素的内存位置: Current jList output

我怎样才能让jList只显示字符串值,(假设这是可能的)如何访问隐藏的int价值,如果我要选择它em来自jList。

干杯。

回答

3

你有两个选择,因为我看到它:

  • 你可以给你的门类体面toString()方法,因为这是JList中默认显示,或
  • 给你的JList一个体面ListCellRenderer。这是推荐的解决方案,因为toString()结果实际上不应用于生产目的,而是用于调试。
+2

如果使用渲染器方法,那么不要忘记重写JList的'getNextMatch(...)'方法,因为此方法使用模型中对象的toString()实现进行搜索列表中的项目。如果你不覆盖这个方法,你会破坏JList的默认功能。 – camickr

+0

任何人都可以详细说明如何使用ListCellRenderers,我发现以下,但我根本不明白它: http://www.coderanch.com/t/342147/GUI/java/understanding-custom-ListCellRenderers – Suipaste

+0

@ Suipaste:使用ListCellRenderer在[JList教程](http://docs.oracle.com/javase/tutorial/uiswing/components/list.html)中有详细描述。我建议你看看它,然后尝试一下。如果仍然卡住,请问一个更具体的问题,然后上面的问题几乎不可能在不重写完整教程的情况下回答。记住,你的问题越具体,通常是更具体和有帮助的答案。 –