如同其它的Swing组件,JTable使用MVC(模型、试图、控制器)设计方式,将可视化组件(JTable实例)从其数据(TableModel实现)中分离出来。
·TableModel接口
1、TableModel为JTable提供
·显示的数据
·表格的维数
·表格中每一列所包含的数据类型
·应该显示的列标题
·是否允许编辑指定单元格的值
2、实现TableModel:
TableValues类
import javax.swing.table.AbstractTableModel;
/**
* 注意:一般使用AbstractTableModel创建TableModel的实现,只有少量数据时使用DefaultTableModel,
*/
public class TableValues extends AbstractTableModel{
private static final long serialVersionUID = -8430352919270533604L;
public final static int NAME = 0;
public final static int GENDER = 1;
public final static String[] columnNames = {"姓名", "性别"};
public Object[][] values = {
{"Cannel_2020",true},
{"Lucy",false},
{"韩梅",false},
{"李雷",true},
{"Jim",true}
};
publicint getColumnCount() {
return values[0].length;
}
publicint getRowCount() {
return values.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
return values[rowIndex][columnIndex];
}
/**
* 获取列名
*/
publicString getColumnName(int column){
return columnNames[column];
}
}
SimpleTableTest类
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
public class SimpleTableTest extends JFrame{
private static final long serialVersionUID = -4172876583187222326L;
protected JTable table;