java中JTable单元格中放复选框

来源:互联网 发布:黑色沙漠巫师捏脸数据 编辑:程序博客网 时间:2024/05/01 10:21

网上查资料,这方面讲的不实很详细。感觉写下来也许有点意义。呵呵本人刚学不久可能体会不深。请高人前辈指点

需要定义2个类:CheckButtonEditor,CheckBoxRenderer

测试类:table

 CheckButtonEditor:代码:

import java.awt.Component;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JRadioButton;
import javax.swing.JTable;
import javax.swing.JTextField;

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();
}
}

CheckBoxRenderer类代码:

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;

class   CheckBoxRenderer   implements   TableCellRenderer{

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

}

table(测试类代码)

import java.awt.Dimension;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;


public class table implements MouseListener{
 JTable table=new JTable();
public table(){
 JFrame frame=new JFrame("sjh");
 frame.setLayout(null);
 
 table=this.gettable();
 table.addMouseListener(this);
 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"),new JCheckBox("111"),new JCheckBox("111"),new JCheckBox("111"),new JCheckBox("111"),new JCheckBox("111")},
                     {new JCheckBox("222"),new JCheckBox("222"),new JCheckBox("222"),new JCheckBox("222"),new JCheckBox("222"),new JCheckBox("222")},
                     {new JCheckBox("333"),new JCheckBox("333"),new JCheckBox("333"),new JCheckBox("333"),new JCheckBox("333"),new JCheckBox("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("结果物").setCellEditor(new CheckButtonEditor(new JCheckBox ()));
        table.getColumn("说明").setCellEditor(new CheckButtonEditor(new JCheckBox ()));
        table.getColumn("类型").setCellEditor(new CheckButtonEditor(new JCheckBox ()));
       
        table.getColumn("发包要求文档").setCellEditor(new CheckButtonEditor(new JCheckBox ()));
        table.getColumn("操作").setCellEditor(new CheckButtonEditor(new JCheckBox ()));
////        table.getColumn("选择").setCellRenderer(new RadioButtonRenderer());
//        table.getColumn("选择").setCellRenderer(new   CheckBoxRenderer());  
       // table.setCellEditor(new CheckButtonEditor(new JCheckBox ()));
        table.getColumn("选择").setCellRenderer(new   CheckBoxRenderer());
        table.getColumn("结果物").setCellRenderer(new   CheckBoxRenderer());
        table.getColumn("说明").setCellRenderer(new   CheckBoxRenderer());
        table.getColumn("类型").setCellRenderer(new   CheckBoxRenderer());
        table.getColumn("发包要求文档").setCellRenderer(new   CheckBoxRenderer());
        table.getColumn("操作").setCellRenderer(new   CheckBoxRenderer());
       
 return table;
}
public static void main(String args[]){
 new table();
}
public void mouseClicked(MouseEvent arg0) {
 // TODO Auto-generated method stub

}
public void mouseEntered(MouseEvent arg0) {
 // TODO Auto-generated method stub
 
}
public void mouseExited(MouseEvent arg0) {
 // TODO Auto-generated method stub
 
}
public void mousePressed(MouseEvent arg0) {
 // TODO Auto-generated method stub
 
}
public void mouseReleased(MouseEvent arg0) {
 // TODO Auto-generated method stub
 
}
}
好了.呵呵.

我的邮箱是smhwell@163.com有空可以探讨啊。小弟很乐意。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 个人医保卡欠费怎么办 医保欠费不想交怎么办 怀化市驾考绿色通道怎么办? 签注易不能办理怎么办 网上怎么办护照和签证 意大利被偷护照怎么办 户口在学校 怎么办签证 户口换了身份证怎么办 广州在校大学生怎么办护照 民间借贷无法还怎么办 退伍档案没接收怎么办 档案被单位扣住怎么办 公积金提不出来怎么办 公积金还贷款怎么办手续 科一预约失败怎么办 科四忘记预约怎么办 我科目一缺考了怎么办? 无可选考试场地怎么办 早产儿脑部发育不好怎么办 宝宝脑部发育不好怎么办 小孩脑部发育不好怎么办 8岁儿童智力低下怎么办 儿童食物不耐受怎么办 忘记就诊卡号怎么办 nt检查预约不到怎么办 听力不好科目三怎么办 青岛公安不立案怎么办 长春驾照丢了怎么办 驾照超期一个月怎么办 太原暂住证丢了怎么办 太原居住证丢了怎么办 太原自行车丢了怎么办 太原身份证丢了怎么办 在太原健康证怎么办 学车体检色盲怎么办 驾照到期有色弱怎么办 入户体检备孕怎么办 去驾校体检散光怎么办 报考警校视力不合格怎么办 违章网上扣分怎么办呢 毓婷避孕后怀孕怎么办