2014-02-18 4 views
1

как установить значение кнопка переключения текста (в зависимости от базы данных) на JTableкак установить текстовое значение кнопки переключения из БД на JTable

Вот код

private class CheckBoxCellEditor extends AbstractCellEditor implements 

TableCellEditor, ItemListener { 
    protected JToggleButton toggle; 
    private String buttonValue; 

    public CheckBoxCellEditor() { 
     toggle = new JToggleButton("off"); 
     toggle.setHorizontalAlignment(SwingConstants.CENTER);   
     toggle.addItemListener(this); 
    } 

    public Component getTableCellEditorComponent(JTable table, 
      Object value, boolean isSelected, int row, int column) { 
     buttonValue = (value == null) ? "" : value.toString(); 
     return toggle; 
    } 

    public Object getCellEditorValue() {  
     // System.out.println(buttonValue);  
     return buttonValue; 
    } 

    @Override 
    public void itemStateChanged(ItemEvent e) { 
     if (e.getStateChange() == ItemEvent.SELECTED) { 
      toggle.setText("On!"); 
      System.out.println(buttonValue); 
     } else { 
      toggle.setText("Off"); 
      System.out.println(buttonValue); 
     }  
    } 
} 

Здесь изображение показывает тумблер, но это не показывает текст.

Когда я нажимаю кнопку, текст отображается, а затем нажмите следующую кнопку, чтобы первый не был виден.

enter image description here

если вы знаете ответ, пожалуйста, поделитесь здесь .. касаемо ...

ответ

4

Вы забыли установить значение тумблера до возвращения его из getTableCellEditorComponent

public Component getTableCellEditorComponent(JTable table, 
     Object value, boolean isSelected, int row, int column) { 


    buttonValue = (value == null) ? "" : value.toString(); 
    toggle.setText(buttonValue); 


    return toggle; 
} 

Если честно, мне интересно, что случилось с возвращением Boolean от getColumnClass в таблице модели для столбца Return и просто позвольте d EFAULT визуализатор и редактор сделки с ним ...

Кроме того ... вы игнорировать значение кнопки, когда вы вернетесь из редактора ...

public Object getCellEditorValue() { 

    // System.out.println(buttonValue); 

    return buttonValue; 
} 

Честно говоря, наверное, лучше использовать toggle.getText(). ..

+0

+1 может быть переопределителем setValueAt – mKorbel

+0

@mKorbel Только что понял, что поставляемый код фактически не реализует TableCellRenderer – MadProgrammer