您的位置:首页 > 其它

JTable的列中添加JCheckBox组件

2015-01-07 11:25 501 查看


JTable的列中添加JCheckBox组件


转载▼

分类: 我的工作总结
今天做项目 用到了jtable的列中添加jcheckbox组件,网上搜了下发现下面的小例子很不错:

import javax.swing.*;

import javax.swing.table.*;

import java.awt.*;

public class MmCheck {

public static void main(String[] args) {

MyTableFrame myframe = new MyTableFrame();

}

}

class MyTableFrame extends JFrame {

JTable table;

MyTableFrame() {

table = new JTable();

add(new JScrollPane(initTable(table)));

setBounds(100, 100, 500, 300);

setVisible(true);

validate();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

private JTable initTable(JTable table) {

DefaultTableModel dtm = new DefaultTableModel(new Object[] { "是否选中", "姓名",

"年龄", "班级", "性别" }, 0);

dtm

.addRow(new Object[] { new Boolean(true), "fox", "12",

"050101", "男" });

table.setModel(dtm);

TableColumnModel tcm = table.getColumnModel();

tcm.getColumn(0).setCellEditor(new DefaultCellEditor(new JCheckBox()));

tcm.getColumn(0).setCellRenderer(new MyTableRenderer());

tcm.getColumn(0).setPreferredWidth(20);

tcm.getColumn(0).setWidth(20);

tcm.getColumn(0).setMaxWidth(20);

return table;

}

}

class MyTableRenderer extends JCheckBox implements TableCellRenderer {

// 此方法可以查考JDK文档的说明

public Component getTableCellRendererComponent(JTable table, Object value,

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

Boolean b = (Boolean) value;

this.setSelected(b.booleanValue());

return this;

}

}

刚看到又一个比较好用的方法,让JCheckBox显示出来:

TableColumn tc = table.getColumnModel().getColumn(0);

tc.setCellEditor(table.getDefaultEditor(Boolean.class));

tc.setCellRenderer(table.getDefaultRenderer(Boolean.class));

只要这3行就能为jtable中的第一列的boolean值 转换为jcheckbox显示出来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: