表格是 Swing 新增加的组件,主要功能是把数据以二维表格的形式显示出来,并且允许用户对表格中的数据进行编辑。表格组件是最复杂的组件之一,它的表格模型功能非常强大、灵活而易于执行。由于篇幅有限,本节只介绍默认的表格模型。
Swing 使用 JTable 类实现表格,常用构造方法如下所示。
JTable():构造一个默认的 JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。JTable(int numRows,int numColumns):使用 DefaultTableModel 构造具有 numRows 行和 numColumns 列个空单元格的 JTable。JTable(Object[][] rowData,Object[] columnNames):构造一个 JTable 来显示二 维数组 rowData 中的值,其列名称为 columnNames。创建一个带有滚动条的 JTable 对象非常简单,如下所示。
JTable table=new JTable(5,6); JScrollPane pane=new JScrollPane(table);第一条语句创建了一个 JTable 对象。第二条语句创建了一个存放 JTable 对象的 JScrollPane 对象,该对象是一个视图对象。JScrollPane是一个垂直和水平滚动条,以及可设置行和列标题的容器。上面两行代码执行后的表格效果如图1 所示。
例 1 使用 JTable 类创建一个包含 8 列的学生成绩表,并向表格中填充几行数据,具体实现代码如下所示。
import java.awt.Container; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; public class JTableDemo { public static void main(String[] agrs) { JFrame frame=new JFrame("学生成绩表"); frame.setSize(500,200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contentPane=frame.getContentPane(); Object[][] tableDate=new Object[5][8]; for(int i=0;i<5;i++) { tableDate[i][0]="1000"+i; for(int j=1;j<8;j++) { tableDate[i][j]=0; } } String[] name={"学号","软件工程","Java","网络","数据结构","数据库","总成绩","平均成绩"}; JTable table=new JTable(tableDate,name); contentPane.add(new JScrollPane(table)); frame.setVisible(true); } }如上述代码所示,表格组件和其他组件类似,可以方便地创建一个 JTable 对象。 如果 JTbale 对象直接添加到 JFrame 中,则表头显示不出来,需要把表格对象放入 JScrollPane 对象中,之后把 JScrollPane 对象添加到 JFrame 中。实例的运行效果如图 2 所示。 。
