java利用表格模型创建表格

接口TableModel定义了一个表格模型,抽象类AbstractTableModel实 现了TableModel接口的大部分方法,只有以下3个抽象方法没有实现。

  • public int getRowCount()。
  • public int getColumnCount()。
  • public Object getValueAt(int rowIndex, int columnIndex)。

通过继承AbstractTableModel类实现上面3个抽象方法可以创建自己 的表格模型类。DefaultTableModel类便是由Swing提供的继承了 AbstractTableModel类并实现了上面3个抽象方法的表格模型类。 DefaultTableModel类提供的常用构造方法如表所示。

DefaultTableModel类提供的常用构造方法
DefaultTableModel类提供的常用构造方法

表格模型创建完成后,通过JTable类的构造方法JTable(TableModel dm)创建表格,就实现了利用表格模型创建表格。

从JDK 1.6开始,提供了对表格进行排序的功能。通过JTable类的 setRowSorter(RowSorter<? extends TableModel> sorter)方法可以为表格设 置排序器。TableRowSorter类是由Swing提供的排序器类。为表格设置排 序器的典型代码如下:

代码

如果为表格设置了排序器,当单击表格的某一列头时,在该列名称 的后面将出现标记,说明按该列升序排列表格中的所有行,如图所示;当再次单击该列头时,标记将变更,说明按该列降序排 列表格中的所有行,如图

按升序排列
按升序排列
按降序排列
按降序排列

注意:在使用表格排序器时,通常要为其设置表格模型,否则将出现如 图21.25所示的效果。一种方法是通过构造方法TableRowSorter(TableModel model)创建排序器;另一种方法是通过 setModel(TableModel model)方法为排序器设置表格模型。

未设置表格模型
未设置表格模型

【例21.5】利用表格模型创建表格,并使用表格排序器。 本例利用表格模型创建了一个表格,并对表格使用了表格排序器。 本例的关键代码如下:

import java.awt.*;

import javax.swing.*;
import javax.swing.table.*;

public class ExampleFrame_05 extends JFrame {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static void main(String args[]) {
		ExampleFrame_05 frame = new ExampleFrame_05();
		frame.setVisible(true);
	}
	
	public ExampleFrame_05() {
		super();
		setTitle("表格模型与表格");
		setBounds(100, 100, 500, 375);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JScrollPane scrollPane = new JScrollPane();
		getContentPane().add(scrollPane, BorderLayout.CENTER);
		String[] columnNames = { "A", "B" };// 定义表格列名数组
		String[][] tableValues = { { "A1", "B1" }, { "A2", "B2" },
				{ "A3", "B3" } };// 定义表格数据数组
		DefaultTableModel tableModel = new DefaultTableModel(tableValues,
				columnNames);// 创建指定表格列名和表格数据的表格模型
		JTable table = new JTable(tableModel);// 创建指定表格模型的表格
		table.setRowSorter(new TableRowSorter<>(tableModel));
		scrollPane.setViewportView(table);
	}
	
}

运行本例,将得到如图1所示的窗体;单击名称为B列的列头 后,将得到如图2所示的效果,表格按B列升序排列;再次单击名称 为B列的列头后,将得到如图3所示的效果,表格按B列降序排列。

运行效果
运行效果
升序排列
升序排列
降序排列
降序排列

发表评论