我有一个问题,就是我使用一个带有CellRenderer的JComboBox来显示我的类AddressNode的值。但是,当我从DropDown中选择一项时,它会将Object值插入到EditorComponent中,而不是插入呈现的值。我的CellRenderer代码如下:
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof AddressNode) {
AddressNode node = (AddressNode) value;
String displayString = "";
displayString += node.getStreet() + " " + node.getHouse();
if (node.getCity() != null)
displayString += (", " + node.getCity());
if (node.getPostCode() != null)
displayString += (" " + node.getPostCode());
setText(displayString);
}
return this;
}例如,当我从DropDown列表中选择一项时,它会将EditorComponent的值设置为类似于: Model.AddressNode@581280a8的值。而我希望它将值设置为与CellRenderer显示的字符串相同的值。
发布于 2015-04-21 20:41:16
您可以尝试下面的代码公共组件getListCellRendererComponent(JList列表,对象值,int index,boolean isSelected,boolean cellHasFocus) {
if (value instanceof AddressNode) {
AddressNode node = (AddressNode) value;
String displayString = "";
displayString += node.getStreet() + " " + node.getHouse();
if (node.getCity() != null)
displayString += (", " + node.getCity());
if (node.getPostCode() != null)
displayString += (" " + node.getPostCode());
//setText(displayString);
}return super.getListCellRendererComponent(list,displayString,index,isSelected,cellHasFocus);}
https://stackoverflow.com/questions/29770112
复制相似问题