这里是用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() {
@Override
public 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 = { "姓名", "工号", "出生年月", "薪水" };
/** * 此方法是返回该模型中的行数 */
@Override
public int getRowCount() {
return p.length;
}
/** * 此方法是返回该模型中的列数 */
@Override
public int getColumnCount() {
return n.length;
}
/** * 此方法是返回row和col的单元格的值 */
@Override
public Object getValueAt(int row, int col) {
return p[row][col];
}
/** * 此方法返回col位置的列的名称 */
@Override
public String getColumnName(int column) {
return n[column];
}
/** * 此方法是针对列中所有的单元格值,返回最具体的超类 */
@Override
public Class<?> getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
}
今天的文章Java Swing JTable 表格【5:表格模型AbstractTableModel】分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31401.html