如何在JTABLE swing中添加复选框
有谁知道如何将JCheckBox
放在JTable
列中? 像这样的东西:
我从如何使用表中获取了这个
提前致谢。
1) JTable 默认使用内置的布尔TableCellRenderers和TableCellEditor来了解JCheckbox ,然后就此产生了反作用的声明,
2) AbstractTableModel应该是有用的,其中在JTable
需要减少/限制/更改嵌套和inheritance默认实现在DefaultTableModel
,
3)考虑使用DefaultTableModel
,(如果你不确定如何工作)而不是AbstractTableModel
,
可以从简单的代码生成:
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); } }); } }