JTable类创建表格

表格是最常用的数据统计形式之一,在Swing中由JTable类实现表 格。本节将学习利用JTable类创建表格的方法。

创建表格

在JTable类中除了默认的构造方法外,还提供了利用指定表格列名数组和表格数据数组创建表格的构造方法,代码如下:

JTable(Object[][] rowData, Object[] columnNames)
  • rowData:封装表格数据的数组。
  • columnNames:封装表格列名的数组。

在使用表格时,通常将其添加到滚动面板中,然后将滚动面板添加到相应的位置。下面看一个这样的例子。

【例子】创建可以滚动的表格。本例利用构造方法JTable(Object[][] rowData, Object[] columnNames)创建了一个表格,并将表格添加到了滚动面板中。本例的完整代码如下:

import java.awt.*;

import javax.swing.*;
public class ExampleFrame_01 extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static void main(String args[]) {
		ExampleFrame_01 frame = new ExampleFrame_01();
		frame.setVisible(true);
	}
	
	public ExampleFrame_01() {
		super();
		setTitle("创建可以滚动的表格");
		setBounds(100, 100, 240, 150);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		String[] columnNames = { "A", "B" }; // 定义表格列名数组
		// 定义表格数据数组
		String[][] tableValues = { { "A1", "B1" }, { "A2", "B2" },
				{ "A3", "B3" }, { "A4", "B4" }, { "A5", "B5" } };
		// 创建指定列名和数据的表格
		JTable table = new JTable(tableValues, columnNames);
		// 创建显示表格的滚动面板
		JScrollPane scrollPane = new JScrollPane(table);
		// 将滚动面板添加到边界布局的中间
		getContentPane().add(scrollPane, BorderLayout.CENTER);
	}
}

运行本实例,将得到如图1所示的窗体;当调小窗体的高度时,将出现滚动条,如图2所示。

创建可以滚动的表格
图1 创建可以滚动的表格
出现滚动条的表格
图2 出现滚动条的表格

在JTable类中还提供了利用指定表格列名向量和表格数据向量创建表格的构造方法,代码如下:

JTable(Vector rowData, Vector columnNames)
  • rowData:封装表格数据的向量。
  • columnNames:封装表格列名的向量。

在使用表格时,有时并不需要使用滚动条,即在窗体中可以显示出整个表格,在这种情况下,也可以直接将表格添加到相应的容器中。

注意:如果是直接将表格添加到相应的容器中,则首先需要通过JTable类的getTableHeader()方法获得JTableHeader类的对象,然后再将该对象添加到容器的相应位置,否则表格将没有列名。

【例子2】创建不可滚动的表格。本例利用构造方法JTable(Vector rowData, Vector columnNames)创建了一个表格,并将表格直接添加到了容器中。本例的关键代码如下:运行本例,将得到如图3所示的窗体;当调小窗体的高度时,不会出现滚动条,如图4所示。如果将上面代码中的最后两行去掉,再次运行本例,将得到如图5所示的窗体,会发现表格没有列名。

import java.awt.*;
import java.util.*;

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

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

	public static void main(String args[]) {
		ExampleFrame_02 frame = new ExampleFrame_02();
		frame.setVisible(true);
	}
	
	public ExampleFrame_02() {
		super();
		setTitle("创建不可滚动的表格");
		setBounds(100, 100, 240, 150);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Vector<String> columnNameV = new Vector<>();// 定义表格列名向量
		columnNameV.add("A");// 添加列名
		columnNameV.add("B");// 添加列名
		Vector<Vector<String>> tableValueV = new Vector<>();// 定义表格数据向量
		for (int row = 1; row < 6; row++) {
			Vector<String> rowV = new Vector<>();// 定义表格行向量
			rowV.add("A" + row);// 添加单元格数据
			rowV.add("B" + row);// 添加单元格数据
			tableValueV.add(rowV);// 将表格行向量添加到表格数据向量中
		}
		// 创建指定表格列名和表格数据的表格
		JTable table = new JTable(tableValueV, columnNameV);
		// 将表格添加到边界布局的中间
		getContentPane().add(table, BorderLayout.CENTER);
		JTableHeader tableHeader = table.getTableHeader();// 获得表格头对象
		// 将表格头添加到边界布局的上方
		getContentPane().add(tableHeader, BorderLayout.NORTH);
	}
}
创建不可滚动的表格
图3 创建不可滚动的表格
不出现滚动条的表格
图4 不出现滚动条的表格
没有表格列名的表格
图5 没有表格列名的表格

发表评论