您的位置:首页 > 编程语言 > Java开发

Java Swing JTable 表格【16:复选框JCheckBox作为表格元素】

2016-01-14 22:07 573 查看

上一篇介绍了组合列表框作为表格元素的例子,这篇根据上篇的DefaultCellEditor的构造方法,再来练习一个复选框的例子

这个例子首先在创建数据时,复选框那一列的值默认值一个给得是false,一个给的是true,所以界面打开的时候会一个是选中,一个是没选中,如图:



代码如下:

package com.acconsys.swing.chapter14;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

/**
* 使用复选框作为编辑器来编辑表格中的单元格
*
* @author burns
*
*/
public class Test18 {

public Test18() {
JFrame f = new JFrame();
MyTable18 mt = new MyTable18();
/**
* 由于MyTable类继承了AbstractTableModel,并且实现了getColmunCount()、getRowCount()、
* getValueAt()方法 由此可以通过通过MyTable18来产生TableModel的实体
*/
JTable t = new JTable(mt);
JCheckBox jc1 = new JCheckBox();
t.getColumnModel().getColumn(4)
.setCellEditor(new DefaultCellEditor(jc1));
t.setPreferredScrollableViewportSize(new Dimension(550, 30));
JScrollPane s = new JScrollPane(t);
f.getContentPane().add(s, BorderLayout.CENTER);
f.setTitle("ColumnModelDd");
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}

public static void main(String[] args) {
new Test18();
}
}

class MyTable18 extends AbstractTableModel {

Object[][] p = {
{ "王鹏", new Integer(66), new Integer(32), new Integer(98), false },
{ "宋兵", new Integer(85), new Integer(69), new Integer(154), true }, };

String[] n = { "姓名", "语文", "数学", "总分", "及格与否" };

@Override
public int getRowCount() {
return p.length;
}

@Override
public int getColumnCount() {
return n.length;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return p[rowIndex][columnIndex];
}

@Override
public String getColumnName(int column) {
return n[column];
}

@Override
public Class<?> getColumnClass(int columnIndex) {
return getValueAt(0, columnIndex).getClass();
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}

@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
p[rowIndex][columnIndex] = aValue;
fireTableCellUpdated(rowIndex, columnIndex);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java jtable swing