2015-11-24 2 views
0

Я в тупике с чем-то, что, я уверен, очень просто.Очень простой редактор редакторов ячеек JCombobox

У меня есть редактор ячеек Jcombobox с объектом, скажем, «Клиент». Клиент имеет «код» и «описание». Клиент toString клиента был переопределен, чтобы вернуть «код».

У меня есть две ячейки в таблице, и мне хотелось бы перечислить коды, один из которых должен содержать описание. Оба списка списков со списком заполняются объектом Customer, оба возвращают CODE. Как я могу сделать второе шоу combobox DESCRIPTION?

Я попытался создать новый подкласс, который переопределяет метод toString и заполняет второе поле со списком, но чтобы загрузить значения в новый подтип, мне придется перезаписать данные и создать новый под-класс -classes или реализовать метод clone для объекта «customer», который я должен обновлять каждый раз, когда добавляю новую переменную.

Есть ли простой способ переопределить рендеринг jcombobox?

Благодаря

ответ

2

Есть ли простой способ переопределить рендеринг jcombobox?

Вам необходимо создать свой собственный рендер для рендеринга определенного свойства объекта Customer.

Общий вид визуализатора будет:

class FooRenderer extends BasicComboBoxRenderer 
{ 
    public Component getListCellRendererComponent(
     JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) 
    { 
     super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 

     if (value instanceof Foo) 
     { 
      Foo foo = (Foo)value; 
      setText(foo.getDescription()); 
     } 

     return this; 
    } 
} 

Заканчивать Combo Box With Custom Renderer для получения дополнительной информации и более полной реализации.

+0

Спасибо. Подробно и точно, что я искал. – MxMave

1

он будет работать, чтобы иметь условный оператор в методе ToString? Кажется, это было бы проще, чем переопределить JComboBox, если это возможно.

+0

Это, безусловно, самое простое решение. Немного грязно, чтобы установить его для каждого элемента в массиве, но невероятно прямо! – MxMave