钦州做网站厦门人才网597人才网
这里是用MyTable来继承AbstractTableModel来创建自己的表格模型,然后,调用JTable(TableModel tm)的构造方法来创建表格。
这里MyTable必须实现三个方法:API如图:
其实在实际应用中,除了实现上面的三个方法,有时根据需要还会重写getColumnName(int column)和getColumnClass(int c)方法。
代码实现如图
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.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;/*** 展示如何使用AbstractTableModel类来创建一个表格* * @author burns* */
public class Test7 {public Test7() {JFrame f = new JFrame();MyTable mt = new MyTable();JTable t = new JTable(mt);t.setPreferredScrollableViewportSize(new Dimension(550, 30));JScrollPane s = new JScrollPane(t);f.getContentPane().add(s, BorderLayout.CENTER);f.setTitle("表格模型的创建实例");f.pack();f.setVisible(true);f.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] args) {new Test7();}
}/*** MyTable继承AbstractTableModel 来自定义自己的表格模型。* * @author burns* */
class MyTable extends AbstractTableModel {/*** */private static final long serialVersionUID = 1L;// 创建一个类MyTable,它继承自AbstractTableModel类// 在这个类中实现getRowCount(),getColumnCount(),getValueAt()这三个方法Object[][] p = {{ "王鹏", new Integer(91), new Integer(1949), new Integer(1910) },{ "朱学莲", new Integer(82), new Integer(1969), new Integer(1510) },{ "梅婷", new Integer(47), new Integer(1957), new Integer(1040) },{ "赵龙", new Integer(61), new Integer(1957), new Integer(1180) },{ "李兵", new Integer(90), new Integer(1987), new Integer(1770) }, };String[] n = { "姓名", "工号", "出生年月", "薪水" };/*** 此方法是返回该模型中的行数*/@Overridepublic int getRowCount() {return p.length;}/*** 此方法是返回该模型中的列数*/@Overridepublic int getColumnCount() {return n.length;}/*** 此方法是返回row和col的单元格的值*/@Overridepublic Object getValueAt(int row, int col) {return p[row][col];}/*** 此方法返回col位置的列的名称*/@Overridepublic String getColumnName(int column) {return n[column];}/*** 此方法是针对列中所有的单元格值,返回最具体的超类*/@Overridepublic Class<?> getColumnClass(int c) {return getValueAt(0, c).getClass();}}