java中Jtable实现多选、全选功能

实现多选功能方法较多,以该链接为例:JTable中 表头中添加 JCheckBox 全选 功能_jtable 全选-CSDN博客

在该例中虽然实现了全选的功能,但有一个问题当全选勾选或者取消是没有问题的,但是,当为勾选全选,而是一次点击下面列表每行的勾选框,当全都勾选时,全选并没有勾选上。

以下代码就是为了解决上述问题

在CheckHeaderCellRender.java中添加一个监听事件和函数

table. addMouseListener (new MouseAdapter(){
    @override
    public void mouseClicked(MouseEvent e){
        if(e.getClickCount() == 1)
        {
            int columnIndex = table.columnAtPoint(e.getPoint)); //获取列
            int rowIndex = table.rowAtPoint(e.getPoint());//获取行
            if(columnIndex == 0)//第0列时,执行代码
            {
                for(int i = 0; i < table.getRowCount(); i++)
                {
                    if(((Boolean)table.getValueAt(i, columnIndex)))
                    {
                        num++;   
                    }
                }
                if(num == table.getRowCount())
                {
                    setSelectBox(true);
                    num = 0;    
                }else{
                    setSelectBox(false);
                    num = 0;
                }
            }
        }    
}
});

public void setSelectBox(boolean value)
{
    selectBox.setSelected(value);
    tableHeader.repaint();
}

主要思路添加table的鼠标监听事件,如果勾选的行数等于table的总行数,则设置全选框为true;否则设置为false.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值