how to insert check box into jtable row in swing
import java.awt.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.*; public class CheckBoxInJTable extends JPanel { public CheckBoxInJTable() { Object[] columns = new Object[] {"Select", "Name"}; Object[][] data = new Object[2][2]; data[0][0] = new Boolean(false); data[0][1] = "John"; data[1][0] = new Boolean(false); data[1][1] = "Bill"; MyTableModel model = new MyTableModel(data, columns); JTable table = new JTable(model); table.getColumnModel().getColumn(0).setCellEditor(new CheckBoxCellEditor()); table.getColumnModel().getColumn(0).setCellRenderer(new CWCheckBoxRenderer()); JScrollPane tableScroller = new JScrollPane(table); add(tableScroller); } private class MyTableModel extends AbstractTableModel { private Object[][] data; private Object[] columns; public MyTableModel(Object[][] data, Object[] columns) { this.data = data; this.columns = columns; } public Class getColumnClass(int columnIndex) { return data[0][columnIndex].getClass(); } public int getColumnCount() { return columns.length; } public int getRowCount() { return data.length; } public Object getValueAt(int rowIndex, int columnIndex) { return data[rowIndex][columnIndex]; } public boolean isCellEditable(int rowIndex, int columnIndex) { return (columnIndex == 0 || columnIndex == 2); } } private 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) { checkBox.setSelected(((Boolean) value).booleanValue()); return checkBox; } public Object getCellEditorValue() { return Boolean.valueOf(checkBox.isSelected()); } } private class CWCheckBoxRenderer extends JCheckBox implements TableCellRenderer { Border border = new EmptyBorder(1,2,1,2); public CWCheckBoxRenderer() { super(); setOpaque(true); setHorizontalAlignment(SwingConstants.CENTER); } public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value instanceof Boolean) { setSelected(((Boolean)value).booleanValue()); setEnabled(table.isCellEditable(row, column)); if (isSelected) { setBackground(table.getSelectionBackground()); setForeground(table.getSelectionForeground()); } else { setForeground(table.getForeground()); setBackground(table.getBackground()); } } else { return null; } return this; } } public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); CheckBoxInJTable test = new CheckBoxInJTable(); f.getContentPane().add(test); f.setSize(350, 350); f.show(); } }
Ads