Here is my code i am using to add a checkbox column onto JTable
My CellEditor class
........................
public class CheckBoxCellEditor extends AbstractCellEditor implements TableCellEditor {
protected JCheckBox checkBox;;
public CheckBoxCellEditor() {
checkBox = new JCheckBox();
checkBox.setHorizontalAlignment(SwingConstants.CENTER);
checkBox.setBackground( Color.white);
}
public Component getTableCellEditorComponent(
JTable table,
Object value,
boolean isSelected,
int row,
int column) {
if(column==0)
{
checkBox.setSelected(((Boolean) value).booleanValue());
Component c =table.getDefaultRenderer(String.class).getTableCellRendererComponent(table, value, isSelected, false, row, column);
if (c != null) {
//checkBox.setBackground(c.getBackground());
}
}
return checkBox;
}
public Object getCellEditorValue() {
return new Boolean(checkBox.isSelected());
}
}
In my Tablemodel I implemented these two methods.
public Class getColumnClass(int col)
{ switch (col)
{
case 0: return Boolean.class;
default: return Object.class;
}
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
if(columnIndex == 0){
return true;}
else {return false; }
}
In my class I am setting the column with renderer and editor like this
TableColumn tc = GlobalAccess.tblChanges.getColumnModel().getColumn(0);
tc.setCellEditor(new CheckBoxCellEditor());
tc.setCellRenderer(GlobalAccess.tblChanges.getDefaultRenderer(Boolean.class));
SO AS OF NOW I AM ABLE TO SHOW THE CHECKBOX ON THE JTABLE FIRST COLUMN.
NOW I WANT TO ADD FUNTIONALITY SO THAT WHEN I SELECT CHECKBOXES(MULITPLE), I WANT TO SELECT THE CORRESPONDING ROWS.
BUT NOW WHEN I CLICK ON CHECKBOX, IT IS GETTING SELECTED, BUT WHEN I CILCK ON SECOND THE FIRST CHECKED CHECKBOX IS AGAIN GETTING DESELETED.
CAN ANYONE PLEASE HELP ME WHAT I AM MISSING.