0

我有一个问题,我正在使用带有 CellRenderer 的 JComboBox 来显示我的类 AddressNode 的值。但是,当我从 DropDown 中选择一个项目时,它会将对象值插入 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;
}

例如,当我从下拉列表中选择一个项目时,它会将 EditorComponent 的值设置为类似:Model.AddressNode@581280a8。而我希望它将值设置为与 CellRenderer 显示的相同的字符串。

4

1 回答 1

0

你可以试试下面的代码 public Component getListCellRendererComponent(JList list, Object value, 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); }

于 2015-04-21T12:41:16.450 回答