JTable加入JCheckBox方法

对于JTable而言,当你设置列属性为Boolean时,其默认显示出复选框外观,但是如果没有进行设置,是无法实现像 JCheckBox/CheckBox 的勾选功能。

 

当我在实现这一块的时候,刚开始也不懂,查阅网上资料,都基本只给出代码,而没讲为什么(这倒没什么,关键是代码一大坨,看都看晕),而且更为蛋疼的是,其实现较为复杂(比较主流的是设置CellEditora、CellRenderer)。经过摸索,最后发现其实并不需要那么麻烦,只需:①将要添加的CheckBox功能的单元格的数据类型设置为Boolean ②添加如下代码的前两句即可

 

【附】效果图及实现代码(含勾选功能的实现):

 

JTable加入JCheckBox方法

 
//设置第0列显示JCheckBox
TableColumnModel tcm = jTable1.getColumnModel();
tcm.getColumn(0).setCellEditor(new DefaultCellEditor(new JCheckBox()));

//添加标格监听事件
jTable1.addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e){
        if(e.getClickCount() == 1){
            int columnIndex = jTable1.columnAtPoint(e.getPoint()); //获取点击的列
            int rowIndex = jTable1.rowAtPoint(e.getPoint()); //获取点击的行

            if(columnIndex == 0{//第0列时,执行代码
                if(jTable1.getValueAt(rowIndex,columnIndex== null){ //如果未初始化,则设置为false
                      jTable1.setValueAt(false, rowIndex, columnIndex);
                  }

                if(((Boolean)jTable1.getValueAt(rowIndex,columnIndex)).booleanValue()){ //原来选中
                      jTable1.setValueAt(false, rowIndex, 0); //点击后,取消选中
                  }
                else {//原来未选中
                      jTable1.setValueAt(true, rowIndex, 0);
                  }
             }

        }
    }

});


转自:http://blog.sina.com.cn/s/blog_6cba238f0101cmrh.html

JTable中添加JCheckBox可以通过自定义表格渲染器和编辑器的方式来实现。 首先,我们需要自定义一个表格渲染器,用于将数据项以复选框的形式呈现在表格中。我们可以创建一个继承自DefaultTableCellRenderer的类,并在其中重写getTableCellRendererComponent方法。在该方法中,我们可以根据数据的值设置JCheckBox的选中状态,并返回一个标签(JLabel)组件,以显示复选框。 其次,我们还需要自定义一个表格编辑器,用于在用户进行编辑时显示复选框。我们可以创建一个继承自DefaultCellEditor的类,并在其中重写构造方法和getCellEditorValue方法。在构造方法中,我们可以为JCheckBox添加一个ItemListener,用于响应用户的选中行为。在getCellEditorValue方法中,我们可以根据JCheckBox的选中状态返回相应的值。 最后,我们需要将自定义的渲染器和编辑器应用到JTable中的指定列。我们可以通过调用JTable的getColumnModel方法获取表格列模型(TableColumnModel),并调用该模型的getColumn方法获取指定的列。然后,可以分别调用TableColumn的setCellRenderer方法和setCellEditor方法,将自定义渲染器和编辑器应用到该列。 例如: ``` JTable table = new JTable(data, columnNames); // 创建JTable对象,data和columnNames分别表示表格的数据和列名 // 创建自定义渲染器 DefaultTableCellRenderer checkboxRenderer = new DefaultTableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JCheckBox checkBox = new JCheckBox(); checkBox.setSelected((Boolean) value); // 根据数据的值设置复选框的选中状态 return checkBox; } }; // 创建自定义编辑器 DefaultCellEditor checkboxEditor = new DefaultCellEditor(new JCheckBox()) { public Object getCellEditorValue() { JCheckBox checkBox = (JCheckBox) editorComponent; return checkBox.isSelected(); // 根据复选框的选中状态返回相应的值 } }; // 将自定义渲染器和编辑器应用到指定列 TableColumnModel columnModel = table.getColumnModel(); TableColumn checkboxColumn = columnModel.getColumn(0); // 假设要将复选框应用到第一列 checkboxColumn.setCellRenderer(checkboxRenderer); checkboxColumn.setCellEditor(checkboxEditor); ``` 通过以上步骤,我们就能在JTable中的指定列中添加JCheckBox,并实现复选框的显示和编辑功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值