在运行时设置JTable的选项
 
概述
Jtable类提供丰富的网格数据显示功能。这个技巧处理有关动态改变诸如滚动条,列宽以及行高等通常的外观的问题 。 (900 words; 九月14, 2001) (九月 20,2001译)
Java基础类(JFC)为创建一个精巧和交互的图形用户界面(GUIs)提供了丰富的组件选择。你可以使用javax.swing.JTable 显示表格式的数据。在这个技巧中,我们研究如何JTable 的常见问题。 
首先让我们定义一个最初的,基本的Jtable类――MyTable: 
import javax.swing.table.*;
import javax.swing.*;
import java.awt.*;
public class MyTable extends JTable{
      //缺省构造函数
      public MyTable(){
           super();
           }
      //使用指定的行列数创建表格的构造函数
        public MyTable(int row, int col){
            super(row, col);
            }
     }
相当简单!! 我们最初的 MyTable 实现就是一个普通的Jtable 。 
下一节,我们将致力于不同的JTable 显示选项――例如滚动条,列宽,选择性以及其它一些属性。我们将扩充MyTable 并且合并一些不同的方法使得它支持我们想要的显示特性。每一节增加一个新方法到MyTable ,最后我们得到一个可完全复用的Jtable 。 
滚动表格
首先,让我们的JTable 显示一些表格式的数据。我创建TableColumnTest示范Jtable 的能力: 
import javax.swing.table.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**Author Sonal Goyal, [email protected]
*/
public class TableColumnTest{
    protected JFrame frame;
    protected JScrollPane scrollpane;
    protected MyTable table;
    public TableColumnTest(){
      //(1) 创建表格模型。
      DefaultTableModel dm = new DefaultTableModel();
      // 每列的名字
      String[] columnNames = {
            "This is going to be a really long column header",
            "Column B", "Column C", "Column D", "Column E", "Column F",
            "Column G", "Column H", "Column I",  "Column J"
            };
      // 实际的数据值
      Integer[][] data = new Integer[8][10];
      // 初始化数据矩阵。
      for (int row = 0; row < 8; row++){
            for (int col = 0; col < 10; ++col){
                  data[row][col] = new Integer(1000000);
            }
      }
      // 设置模型和数据及列头关联
      dm.setDataVector(data, columnNames);
      //(2) 创建表格
      table = new MyTable();
      //(3) 连接模型和表格
      table.setModel(dm);
      //(4) 为表格创建滚动面板
      scrollpane =  new JScrollPane(table);
      //(5) 显示表格
      frame =  new JFrame();
      frame.getContentPane().add(scrollpane);
      frame.setSize(200, 150);
      frame.setVisible(true);
  }
public static void main(String[] args){
       TableColumnTest test = new TableColumnTest();
}
示范程序相当简单。我们通过下面的步骤构造了一个简单的JTable: 
·         创建并设置TableModel, 它包含行,列,列头以及数据数据的信息 
- 创建并设置
JTable, 它根据模型显示数据 
 - 将
JTable 和第一步创建的模型关联  
但是在这个代码里有一个曲解: 第四步加入了一个滚动面板。我们将构建的表格显示在一个Jframe里面; 参看图1 
 
图 1. 杂乱的滚动