表格也是 GUI 程序中常用的组件, 表格是一个由多行、多列组成的二维显示区。Swing 的 JTable 以及相关类提供了对这种表格的支持。使用了 JTable 以及相关类, 程序可以使用简单代码创建表格来显示二维数据,也可以开发出功能丰富的表格,还可以为表格定制各种显示外观、编辑特性。

    使用 JTable 来创建表格是非常容易的事情,它可以把一个二维数据包装成一个表格,这个二维数据既可以是一个二维数组,也可以是集合元素 Vector 对象(Vector 里面包含 Vector 形成二维数据)。 除此之外,为了给该表格的每一列指定列标题,还需要传入一个一维数据作为列标题,这个一维数据既可以是一维数组,也可以是 Vector 对象

    在使用 JTable 以前,先看一下它的构造函数有哪些,如下表所示。

    方法描述 功能说明
    JTable() 建立一个新的 JTable,并使用系统默认的 Model
    JTable(int numRows, int numColumns) 建立一个具有 numRows 行、numColumns 列的空表格,使用的是 DefaultTableModel
    JTable(Object[][] rowData, Object[][] columnNames) 建立一个显示二维数组数据的表格,且可以显示列的名称
    JTable(TableModel dm) 建立一个 JTable ,有默认的字段模式以及选择模式,并设置数据模式
    JTable(TableModle dm, TableColumnModel cm) 建立一个 JTable,设置数据模式与字段模式,并有默认的选择模式
    JTable(TableModle dm, TableCollmnModel cm, ListSelectionModel sm) 建立一个 JTable,设置数据模式、字段模式与选择模式
    JTable(Vector rowData, Vector columnNames) 建立一个以 Vector 为输入来源的数据表格,可显示行的名称

    在上表中,TableModel 是用来存储列表数据的,数据包括表头的标题数据与表体的实体数据。TableModel **为功能接口,通常使用其具体的实现类 **DefaultTableModel,其构造方法为

    1. public DefaultTableModel(Object[][] tbody, Object[] thead)

    上述代码中,tbody 表示表体,为一个二维数据;thead 表示表头,为一个一维数组。其表示描述如下。

    • 表体:是一个 Object 类型的二维数组,由于多态的自动类型提升,可以直接使用 String[][] 来存储数据
    • 表头:是一个 Object 类型的一维数组,同样,可以直接使用 String[] 来存储所有的标题字符串


    了解了 JTable 的构造方法后,接下来通过一个案例学习如何使用 JTable 来创建一个简单表格,如下所示。

    1. import javax.swing.*;
    2. public class example24 {
    3. //创建 JFrame 窗口
    4. JFrame jf = new JFrame("简单表格");
    5. //声明 JTable 类型的变量 table
    6. JTable table;
    7. //1.定义一维数组作为列标题
    8. Object[] columnTitle = {"姓名", "年龄", "性别"};
    9. //2.定义二维数组作为表格行对象数据
    10. Object[][] tableDate = {
    11. new Object[] {"李清照", 29, "女"},
    12. new Object[] {"苏格拉底", 56, "男"},
    13. new Object[] {"李白", 35, "男"},
    14. new Object[] {"弄玉", 18, "女"},
    15. new Object[] {"虎头", 2, "男"},
    16. };
    17. //3.使用 JTable 对象创建表格
    18. private void init() {
    19. //以二维数组和一维数组来创建一个 JTable 对象
    20. table = new JTable(tableDate, columnTitle);
    21. //将 JTable 对象放在 JScrollPane 中,并将该 JScrollPane 放在窗口中显示出来
    22. jf.add(new JScrollPane(table));
    23. //设置自适应 JFrame 窗体大小
    24. jf.pack();
    25. //设置单击关闭按钮是默认为退出
    26. jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    27. //设置窗体可见
    28. jf.setVisible(true);
    29. }
    30. public static void main(String[] args) {
    31. new example24().init();;
    32. }
    33. }

    在上述代码块中,使用 JTable 在 JFrame 窗口中创建了一个简单的表格,该表格有两部分组成,分别是列标题和行对象。代码第 9 行定义一维数组作为表格列标题,代码第 11~17 行定义二维数组作为表格的行对象数据。在 init()方法中,首先使用 JTable 对象的构造方法来创建表格,然后将 JTable 对象放在 JScrollPane 中,并将 JScrollPane 放在 JFrame 窗口中显示出来,最后对 JFrame 窗口进行了简单设置。

    运行程序,生成的窗口如下所示。
    QQ截图20200703154645.png