表格是 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 所示。
JTable 类常用方法:
- getColumnCount()---- 返回列模型中的列数
- getColumnN ame(int column)---- 返回出现在视图中 column 列位置处的列名称
- getRowCount()---- 返回 JTable 中可以显示的行数(给定无限空间)
- getRowSorter() ----返回负责排序的对象
- getSelectedColumn() ----返回第一个选定列的索引,如果没有选定的列, 则返回 -1
- getSelectedRow()---- 返回第一个选定行的索引,如果没有选定的行, 则返回 -1
- getValueAt(int row,int column)---- 返回 row 和 column 位置的单元格值
- isEditing()---- 如果正在编辑单元格,则返回 true
- selectAll()---- 选择表中的所有行、列和单元格
- setColumnSelectionInterval(int index0,int index1) ----选择从 index0 到
index1之间(包含两端)的列 - setRowSelectionInterval(int index0,int index1) ----选择从 index0 到 index1
之间(包含两端)的行 - setTableHeader(JTableHeader tableHeader)---- 将此 JTable 所使用的 tableHeader
设置为 newHeader - setUpdateSelectionOnSort(boolean update) ----指定排序后是否应该更新选择
- setValueAt(Object a Value,int row,int column)---- 设置表模型中 row 和 column
位置的单元格值
例 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 所示。
。