That's because you need a TableCellRenderer for displaying cells when they are not edited.
However, you can make your JTable use a check box for both rendering and editing a lot easier: make your TableModel return Boolean.class in its getColumnClass method for that column. JTable uses that return value to determine a global renderer / editor for cells, and for Boolean that is a check box.