2013-03-30 2 views
4

У меня есть JComboBox в 3-м и 4-м столбце JTable, но я не знаю, как получить свои вещи ... проблема не метод, чтобы получить предметы, но литаяJComboBox в JTable

JComboBox combo=(JComboBox) jTable1.getColumnModel().getColumn(3).getCellEditor(); 

Помогите мне пожалуйста?

+0

Для лучшей помощи раньше, опубликовать [SSCCE] (http://sscce.org/) –

ответ

5

The JComboBox заворачивают в CellEditor. Вы должны получить обернутый компонент, например, при использовании DefaultCellEditor:

DefaultCellEditor editor = (DefaultCellEditor)table.getColumnModel().getColumn(3).getCellEditor(); 
JComboBox combo = (JComboBox)editor.getComponent(); 
+0

он работает, но он удаляет элементы всех списков всех строк ... Я пробовал с: Редактор DefaultCellEditor (DefaultCellEditor) jTable1.getCellEditor (0, 3); JComboBox combo = (JComboBox) editor.getComponent(); combo.removeItemAt (combo.getSelectedIndex()); –

+0

Не уверен, что я понимаю: вы пытаетесь удалить элементы комбинированного поля в заданной строке? –

+0

Да, я хочу удалить определенный элемент combobox в определенной строке (я делаю это с двойным щелчком мыши, чтобы удалить выбранный элемент) –

0

попробовать что-то вроде этого:

public void example(){ 

     TableColumn tmpColum =table.getColumnModel().getColumn(1); 
     String[] DATA = { "Data 1", "Data 2", "Data 3", "Data 4" }; 
     JComboBox comboBox = new JComboBox(DATA); 

     DefaultCellEditor defaultCellEditor=new DefaultCellEditor(comboBox); 
     tmpColum.setCellEditor(defaultCellEditor); 
     tmpColum.setCellRenderer(new CheckBoxCellRenderer(comboBox)); 
     table.repaint(); 
    } 


/** 
    Custom class for adding elements in the JComboBox. 
*/ 
class CheckBoxCellRenderer implements TableCellRenderer { 
     JComboBox combo; 
     public CheckBoxCellRenderer(JComboBox comboBox) { 
      this.combo = new JComboBox(); 
      for (int i=0; i<comboBox.getItemCount(); i++){ 
       combo.addItem(comboBox.getItemAt(i)); 
      } 
     } 
     public Component getTableCellRendererComponent(JTable jtable, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 
      combo.setSelectedItem(value); 
      return combo; 
     } 
    } 
Смежные вопросы