实现多选功能方法较多,以该链接为例: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.