一:JTable和TableModel关系
TableModel:为Table提供显示数据、表格维数、表格中显示数据类型、标题等Table需要显示的一些属性。
JTable:提供表格本身的属性和操作,比如表格的样式、行高、背景、行选中属性等。
javax.swing.table.TableModel和javax.swing.JTable之间的关系:模特与衣服之间的关系。
JTable:模特衣服,主要是把数据通过二维表格方式表示出来。
创建JTable并加载模型
JTable table = new JTable(TableModel); *如果要显示第一行标题栏,则必须把table添加到JScrollPane中。
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableModel;
/*
* JTabel测试*/
public class TableTestFrame extends JFrame{
public static void main(String[] args) {
TableTestFrame table = new TableTestFrame();
table.initFrame();
}
public void initFrame() {
this.setSize(600,600);
this.setResizable(false);
this.setTitle("table测试");
this.setDefaultCloseOperation(3);
this.setLayout(new FlowLayout());
this.setLocationRelativeTo(null);
//创建子类TableModel对象
ModelTest mt = new ModelTest();
//表格
JTable table = new JTable(mt);
//设置table样式
table.setRowHeight(40);
//设置列宽
// int columnCount = table.getColumnCount();
// for(int i=0;i<columnCount;i++){
// table.getColorModel().getColumn(i).setPreferredWidth(30);
// }
JScrollPane jsp = new JScrollPane(table);
//设置滚动条大小
jsp.setPreferredSize(new Dimension(400, 400));
this.add(jsp);
this.setVisible(true);
}
}
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
/*
* 属于表格模型*/
public class ModelTest implements TableModel{
//定义二维数组
private String[][] value = new String[7][8];
//定义标题的一维数组
private String[] title ={"1","2","3","4","5","6","7","8",};
//构造函数
public ModelTest(){
for(int i=0;i<value.length;i++){
for(int j=0;j<value[0].length;j++){
value[i][j] = "第"+i+"行第"+j+"列";
}
}
}
public int getRowCount() {
return value.length;
}
public int getColumnCount() {
return value[0].length;
}
public String getColumnName(int columnIndex) {
return title[columnIndex];
}
public Class<?> getColumnClass(int columnIndex) {
return String.class;
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
public Object getValueAt(int rowIndex, int columnIndex) {
return value[rowIndex][columnIndex];
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
//设置后的值设置到数组中
value[rowIndex][columnIndex]=(String) aValue;
}
public void addTableModelListener(TableModelListener l) {
}
public void removeTableModelListener(TableModelListener l) {
}
}