Este exemplo baseia-se no Exemplo com AbstractTableModel
Voltemos ao objeto Cliente, ele possui uma coluna do tipo TemCarro, que é um string sim e não.
Se quisermos que apareça com um checkbox é até bem simples. As colunas de JTables aceitam um TableCellRenderer, que nada mais é que um objeto usado para "renderizar" o que aparece ao usuário.
Assim, criamos o objeto CheckBoxRenderer que herda de JCheckBox, apenas implementando o método getTableRedererComponent da interface TableCellRenderer
CheckBoxRenderer
import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {
CheckBoxRenderer() {
setHorizontalAlignment(JLabel.CENTER);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
//setBackground(Color.YELLOW); // foco em amarelo - use este
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
//setBackground(row%2==0?new Color(225, 225, 225):Color.WHITE); -- para zebrar use essa
}
setSelected(value.equals("Sim")); // != null && ((Boolean)value).booleanValue())); -- para usar true/false
return this;
}
}
Principal
Para associar a coluna com o objeto de render, use esta linha
table.getColumnModel().getColumn(modelo.COL_TEMCARRO).setCellRenderer((TableCellRenderer) new CheckBoxRenderer());
ou de uma maneira mais simples (faz a mesma coisa)
TableColumn coluna = table.getColumnModel().getColumn(modelo.COL_TEMCARRO);
coluna.setCellRenderer((TableCellRenderer) new CheckBoxRenderer());
Tela
O resultado:

Veja também