Como pegar a seleção(evento) de um checkbox?

Eai galera estou com um problema…criei uma Jtable com 2 colunas de checkbox. Gostaria de saber como eu faço para saber qdo o usuario clicou?
E também como eu faço para deixar a seleção apenas em um dos checkboxes por linha?

...
final Object[][] data = new Object[lista2.size()][tamanhodata];
	int count=0;
	for(int i=0;i<lista2.size();i++)
	{
		
		data[count][0]=lista2.get(i);
		data[count][1]= new Boolean(false);
        data[count][2]= new Boolean(false);
        count++;
	}
JTable jtable = new JTable(new MyTableModel(columnNames,data,edicao));
....

initColumnSizes(JTable table)

MyTableModel model = (MyTableModel)table.getModel();
    TableColumn column = null;
    Component comp = null;
    int headerWidth = 0;
    int cellWidth = 0;
    TableCellRenderer headerRenderer =
        table.getTableHeader().getDefaultRenderer();

    for (int i = 0; i >< tamanho; i++) {
        column = table.getColumnModel().getColumn(i);

        comp = headerRenderer.getTableCellRendererComponent(
                             null, column.getHeaderValue(),
                             false, false, 0, 0);
        headerWidth = comp.getPreferredSize().width;

        comp = table.getDefaultRenderer(model.getColumnClass(i)).
                         getTableCellRendererComponent(
                             table, null,
                             false, false, 0, i);
        cellWidth = comp.getPreferredSize().width;

        column.setPreferredWidth(Math.max(headerWidth, cellWidth));
       
    }

public class MyTableModel extends AbstractTableModel implements TableCellRenderer {
private Object[][] dados;
public MyTableModel(Object[][] dados){
this.dados=dados;
}
public int getRowCount() {
return dados.length;
}

public int getColumnCount() {
    return 2;
}

public Object getValueAt(int i, int i0) {
    return dados[i][i0];
}

public Component getTableCellRendererComponent(JTable jTable, Object object, boolean b, boolean b0, int i, int i0) {
    JCheckBox check=new JCheckBox();
    check.setSelected(new Boolean(dados[i][i0].toString()));
    return check;
} 

}

//No form fica assim…
public class NovoJFrame extends javax.swing.JFrame {

private Object[][] dados;
private MyTableModel m;
public NovoJFrame() {
    initComponents();
    dados=new Object[][]{{false,false},{false,false}};
    m=new MyTableModel(dados);
    jTable1.setDefaultRenderer(Object.class,m);
    jTable1.setModel(m);
    
}

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
    dados[jTable1.getSelectedRow()][jTable1.getSelectedColumn()]=!new Boolean(dados[jTable1.getSelectedRow()][jTable1.getSelectedColumn()].toString());
    m.fireTableDataChanged();
}                                    

}