我有一个装满汽车的JList,由他们的名字代表。
喜欢:
-GT
-206x
-personalCar
-...
问题是:当我选择一个值时, getSelectedValue()方法返回列表中显示的字符串。
我希望获得汽车的ID,并修改 getSelectedValue()以返回ID。所以我创建了一个扩展JLabel并实现包含ID的ListCellRenderer的类。 JList将此类设置为他的cellRenderer。
如何覆盖 getSelectedValue()方法而不是返回汽车的名称,而是返回JLabel中的ID?
谢谢你的时间!
编辑:如果你想看到我想要的代码:
list.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
String ID = ((JList) e.getSource()).getSelectedValue();
//this method returns not the value of the JLabel clicked, but the ID inside
}
}
答案 0 :(得分:2)
getSelectedValue()
会返回您添加到列表中的对象。你的问题是你可能只添加了文本,而不是一个持有id的对象。 JList
显示的值是使用toString()
方法生成的,只要您的Car
类同时具有合适的toString()
和getId()
方法,您所要做的就是传递Car
对象,而不只是传递其名称。