如何在JTABLE swing中添加复选框

有谁知道如何将JCheckBox放在JTable列中? 像这样的东西:

表格教程中的表格

我从如何使用表中获取了这个

提前致谢。

1) JTable 默认使用内置的布尔TableCellRenderers和TableCellEditor来了解JCheckbox ,然后就此产生了反作用的声明,

2) AbstractTableModel应该是有用的,其中在JTable需要减少/限制/更改嵌套和inheritance默认实现在DefaultTableModel

3)考虑使用DefaultTableModel ,(如果你不确定如何工作)而不是AbstractTableModel

table_with_BooleanType_column

可以从简单的代码生成:

 import javax.swing.*; import javax.swing.table.*; public class TableCheckBox extends JFrame { private static final long serialVersionUID = 1L; private JTable table; public TableCheckBox() { Object[] columnNames = {"Type", "Company", "Shares", "Price", "Boolean"}; Object[][] data = { {"Buy", "IBM", new Integer(1000), new Double(80.50), false}, {"Sell", "MicroSoft", new Integer(2000), new Double(6.25), true}, {"Sell", "Apple", new Integer(3000), new Double(7.35), true}, {"Buy", "Nortel", new Integer(4000), new Double(20.00), false} }; DefaultTableModel model = new DefaultTableModel(data, columnNames); table = new JTable(model) { private static final long serialVersionUID = 1L; /*@Override public Class getColumnClass(int column) { return getValueAt(0, column).getClass(); }*/ @Override public Class getColumnClass(int column) { switch (column) { case 0: return String.class; case 1: return String.class; case 2: return Integer.class; case 3: return Double.class; default: return Boolean.class; } } }; table.setPreferredScrollableViewportSize(table.getPreferredSize()); JScrollPane scrollPane = new JScrollPane(table); getContentPane().add(scrollPane); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { TableCheckBox frame = new TableCheckBox(); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.pack(); frame.setLocation(150, 150); frame.setVisible(true); } }); } }