java awt jtable 复选框_Java Swing 开发之JTable中在添加组件(JCheckBox)

这篇博客介绍了如何在Java Swing的JTable中添加复选框组件。通过创建自定义的CheckBoxCellEditor和CWCheckBoxRenderer类,实现了在表格的特定列显示并编辑复选框。内容包括设置CellEditor和CellRenderer,以及展示带有复选框的表格数据。
摘要由CSDN通过智能技术生成

首先是创建表格

JTable demoTable= new JTable();

DefaultTableModel dtmDemo = (DefaultTableModel) demoTable.getModel();

String[] tableHeads = { "序号","id","jCheckBox"};

dtmDemo.setColumnIdentifiers(tableHeads);

//这里的2指的是第几列,从0开始计数

demoTable.getColumnModel().getColumn(2).setCellEditor(new CheckBoxCellEditor());

demoTable.getColumnModel().getColumn(2).setCellRenderer(new CWCheckBoxRenderer());

//JTable中的数据

for(int i=0;i<10;i++){

Object[] objdata = { i,2,new Boolean(false)/**这里就那个JCheckBox位置*/};

dtmDemo.addRow(objdata);

}

将下面的类容复制粘贴到你正在想加组件的类下面

//~ Inner Classes ----------------------------------------------------------------------------------------------------

class CheckBoxCellEditor extends AbstractCellEditor implements TableCellEditor {

//~ Static fields/initializers -------------------------------------------------------------------------------------

private static final long serialVersionUID = 1L;

//~ Instance fields ------------------------------------------------------------------------------------------------

protected JCheckBox checkBox;

//~ Constructors ---------------------------------------------------------------------------------------------------

public CheckBoxCellEditor() {

checkBox = new JCheckBox();

checkBox.setHorizontalAlignment(SwingConstants.CENTER);

// checkBox.setBackground( Color.white);

}

//~ Methods --------------------------------------------------------------------------------------------------------

@Override public Object getCellEditorValue() {

return Boolean.valueOf(checkBox.isSelected());

}

//~ ----------------------------------------------------------------------------------------------------------------

@Override public Component getTableCellEditorComponent(

JTable table,

Object value,

boolean isSelected,

int row,

int column) {

checkBox.setSelected(((Boolean) value).booleanValue());

return checkBox;

}

} // end class CheckBoxCellEditor

class CWCheckBoxRenderer extends JCheckBox implements TableCellRenderer {

//~ Static fields/initializers -------------------------------------------------------------------------------------

private static final long serialVersionUID = 1L;

//~ Instance fields ------------------------------------------------------------------------------------------------

Border border = new EmptyBorder(1, 2, 1, 2);

//~ Constructors ---------------------------------------------------------------------------------------------------

public CWCheckBoxRenderer() {

super();

setOpaque(true);

setHorizontalAlignment(SwingConstants.CENTER);

}

//~ Methods --------------------------------------------------------------------------------------------------------

@Override public Component getTableCellRendererComponent(

JTable table,

Object value,

boolean isSelected,

boolean hasFocus,

int row,

int column) {

if (value instanceof Boolean) {

setSelected(((Boolean) value).booleanValue());

// setEnabled(table.isCellEditable(row, column));

setForeground(table.getForeground());

setBackground(table.getBackground());

}

return this;

}

} // end class CWCheckBoxRenderer

最后效果:

d1d021f753430046083b16be7ed669d4.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值