为swing表格添加复选框

public class CheckBoxRenderer implements TableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        if (value==null)
        {
            return null;
        }
        return (Component)value;
    }

}


public class CheckButtonEditor extends DefaultCellEditor
    implements ItemListener
{
    private JCheckBox button;

    public CheckButtonEditor(JCheckBox checkBox)
    {
        super(checkBox);
    }

    public Component getTableCellEditorComponent(JTable table, Object value,
            boolean isSelected, int row, int column)
    {
        if (value==null) return null;
        button = (JCheckBox)value;
        button.addItemListener(this);
        return (Component)value;
    }

    public Object getCellEditorValue()
    {
        button.removeItemListener(this);
        return button;
    }

    public void itemStateChanged(ItemEvent e)
    {
        super.fireEditingStopped();
    }
}


public class Table {
    
    JTable table=new JTable();
    public Table(){
        JFrame frame=new JFrame("sjh");
        frame.setLayout(null);
    
        table=this.gettable();
        JScrollPane src=new JScrollPane(table);
        src.setBounds(0, 0, 400, 200);
        frame.setSize(new Dimension(400,200));
        frame.add(src);
        frame.setVisible(true);
    }
    public JTable gettable(){
        DefaultTableModel dm = new DefaultTableModel();
        dm.setDataVector(
          new Object[][]{{new JCheckBox(),"111","111","111"},
                         {new JCheckBox(),"333","333","333"},
          },
        new Object[]{"","选择","结果物","说明"});

        JTable table = new JTable(dm){
        public void tableChanged(TableModelEvent e) {
                super.tableChanged(e);
                repaint();
              }
            };
         table.getColumn("").setCellEditor(new CheckButtonEditor(new JCheckBox ()));
         table.getColumn("").setCellRenderer(new CheckBoxRenderer());
         return table;
    }
    public static void main(String args[]){
        new Table();
    }
    
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值