Класс визуализации ячеек для JComboBox в JTable без параметров в конструкторе - PullRequest
0 голосов
/ 15 октября 2011

Я создаю средство визуализации ячеек для JComboBox в JTable. Конструктор этого класса не должен принимать никаких параметров. У меня есть следующий основной код для метода getTableCellRendererComponent:

 public Component getTableCellRendererComponent(JTable table, Object value,  
              boolean isSelected, boolean hasFocus,int row, int column)  
 {  
     if (value != null) {  

    removeAllItems();  

         value = value_to_string;
         addItem(value); 


         if (isSelected) {
             this.setForeground(table.getSelectionForeground());
             super.setBackground(table.getSelectionBackground());
         } else {
             this.setForeground(table.getForeground());
             this.setBackground(table.getBackground());
         }

        // Select the current value
         this.setSelectedItem(value);  

     }  
     return this;  
 } 

Проблема заключается в том, что вместо объекта у меня будет массив объектов String (String []). Я пытался использовать String[] value_to_string = (String[]) value; но это приводит к ошибке исключения. Как я уже сказал, в конструкторе не должно быть никаких параметров. Может кто-нибудь найти способ решить эту проблему? Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 16 октября 2011

Вам следует настроить вашу TableModel.

@Override
public Class<?> getColumnClass(final int col) {
  return String[].class;
}

@Override
public Object getValueAt(final int row, final int col) {
  String[] yourStringArray = // some code
  return yourStringArray;
}

Если вы сделаете это таким образом, вы можете привести Object к String [], как вы упомянули выше в рендере.String[] value_to_string = (String[]) value;

1 голос
/ 15 октября 2011

Проблема в том, что в качестве значения вместо объекта я бы использовал массив объектов String (String []).

Тогда данные в вашей модели неверны,TableModel должен содержать только одно значение.Это значение, которое было выбрано из поля со списком.String [] используется только редактором поля со списком, а не средством визуализации.

...