博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 表头添加复选框,表头带有CheckBox可以实现全选的jtable
阅读量:5299 次
发布时间:2019-06-14

本文共 1369 字,大约阅读时间需要 4 分钟。

表的第一列都是checkbox,表头的checkbox可以实现全选和全不选的功能

c9aea38aadb4ad8922a04e9349d73cb4.png

bcc2b76d8edb0bc1a2609b1594179f10.png 

一开始要设置一下tablemodel ,这样boolean会被自动显示成一个checkbox,icon也会被自动显示:

table .setModel(new DefaultTableModel(){

@Override

public Class getColumnClass(int c){

Object value = getValueAt(0, c);

if(value!=null)

return value.getClass();

else return super.getClass();

}

});

然后,先写一个表头的renderer(renderer 里有一个方法返回component,table会把这个component的“样子”画在表格中,只是画出它的样子,这个component是不能用的):

class MyCheckBoxRenderer extends JCheckBox implements TableCellRenderer{

public MyCheckBoxRenderer () {

this.setBorderPainted(true);

}

@Override

public Component getTableCellRendererComponent(JTable table, Object value,

boolean isSelected, boolean hasFocus, int row, int column) {

// TODO Auto-generated method stub

return this;

}

}

然后把它设成表头第一列的renderer(第一列名字叫“select"):

final MyCheckBoxRenderer check = new MyCheckBoxRenderer();

table.getColumn("select").setHeaderRenderer(check);

由于表头和表中的Cell不一样,表头是不可编辑的,所以给他添加一个mouselistener才能响应事件:

table.getTableHeader().addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e){

if(table.getColumnModel().getColumnIndexAtX(e.getX())==0){//如果点击的是第0列,即checkbox这一列

JCheckBox Checkbox = (JCheckBox)check;

boolean b = !check.isSelected();

check.setSelected(b);

table.getTableHeader().repaint();

for(int i=0;i

table.getModel().setValueAt(b, i, 0);//把这一列都设成和表头一样

}

}

}

});

第一列的数据类型是boolean就会被自动显示成一个checkbox

转载地址:http://uodqv.baihongyu.com/

你可能感兴趣的文章
XSS原理及防范
查看>>
WPF中Image显示本地图片
查看>>
SVN版本管理
查看>>
哈希表等概率情况下查找成功和查找不成功的平均查找长度的计算
查看>>
Windows Phone 7你不知道的8件事
查看>>
脚本删除文件下的文件
查看>>
实用拜占庭容错算法PBFT
查看>>
java b组 小计算器,简单计算器..
查看>>
java的二叉树树一层层输出,Java构造二叉树、树形结构先序遍历、中序遍历、后序遍历...
查看>>
php libevent 定时器,PHP 使用pcntl和libevent实现Timer功能
查看>>
php仿阿里巴巴,php实现的仿阿里巴巴实现同类产品翻页
查看>>
matlab fis编辑器在哪,基本FIS编辑器
查看>>
linux的串口子系统,TTY子系统
查看>>
修改linux远程22端口,linux修改ssh远程端口22
查看>>
Linux系统的创始者,组图:Linux之父的办公室首度曝光
查看>>
关于linux的环境变量设置,linux环境变量设置
查看>>
socket模块,简单的套接字,加循环
查看>>
个人主页优化(2)
查看>>
Node 中异常收集与监控
查看>>
二丶Python字符串1
查看>>