2011-10-18 6 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(...)メソッドをオーバーライドするだけで、最初の列のBoolean.classが返され、JTableはデフォルトのレンダラー/エディタを使用します。

+0

あなたの答えはトリックでした!ありがとう! –