2011-10-18 5 views
2

으로 이동하는 체크 박스를 방지 :내가 아래 체크 박스로 렌더링 세포 JTable로 열이 JTable의

enter image description here

어떻게 내가 그것을 클릭 할 때마다 이동 확인란을 방지합니까? 다음은 셀 렌더러 및 셀 편집기입니다.

protected class CheckBoxCellRenderer extends JCheckBox implements TableCellRenderer { 

    @Override 
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 
    this.setSelected((Boolean) tableModel.getValueAt(row, 0)); 
    return this; 
    } 

} 

protected class CheckBoxCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener { 

    private final CheckBoxCellRenderer cell = new CheckBoxCellRenderer(); 
    private int row; 

    public CheckBoxCellEditor() { 
    cell.addActionListener(this); 
    } 

    @Override 
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int rowIndex, int vColIndex) { 
    cell.setSelected(((Boolean) value).booleanValue()); 
    row = rowIndex; 
    return cell; 
    } 

    @Override 
    public Object getCellEditorValue() { 
    return cell.isSelected(); 
    } 

} 

감사합니다.

+0

더 나은 도움을 받으려면 [SSCCE] (http://pscode.org/sscce.html)를 게시하십시오. –

답변

4

사용자 정의 렌더러/편집기를 만들지 마십시오.

JTable은 이미 기본 렌더러를 지원합니다. 다만, TableModel 또는 JTable의 getColumnClass (...) 메소드를 오버라이드 (override) 해, 최초의 열의 Boolean.class를 돌려 주어, JTable는 디폴트의 렌더러/에디터를 사용합니다.

+0

신난다, 당신의 대답은 트릭을했습니다! 감사! –