How to add JCheckBox in JTable
In this tutorial, we are going to see how to add JCheckBox in JTable. JTable is a subclass of JComponent class and it can be used to create a table with information displayed in multiple rows and columns. When a value is selected in a JTable, a TableModelEvent is generated, which is handled by implementing a TableModelListener interface. We can add or insert a checkbox in a JTable cell by implementing the method getColumnClass().
We need to redefine the method getColumnClass() to return Boolean.class for the appropriate column.
Java Program to add JCheckBox in JTable:
import javax.swing.*; import java.awt.*; import javax.swing.table.DefaultTableModel; public class CheckBoxInTable extends JFrame { public CheckBoxInTable() { //Headers for JTable String[] columns = {"Id", "Name", "Address", "Available"}; //data for JTable in a 2D table Object[][] data = { {1, "Thomas", "Alaska", true }, {2, "Jean", "Arizona", true }, {3, "Yohan", "California", false }, {4, "Emily", "Florida", false } }; DefaultTableModel model = new DefaultTableModel(data, columns); JTable table = new JTable(model) { public Class getColumnClass(int column) { //return Boolean.class return getValueAt(0, column).getClass(); } }; JScrollPane scrollPane = new JScrollPane(table); getContentPane().add(scrollPane); JLabel labelHead = new JLabel("List of employees"); labelHead.setFont(new Font("Arial",Font.TRUETYPE_FONT,20)); getContentPane().add(labelHead,BorderLayout.PAGE_START); } public static void main(String[] args) { CheckBoxInTable frame = new CheckBoxInTable(); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.setSize(400, 200); frame.setVisible(true); } }
Output: