阳阳老师笔记系列:Java高级组件JTable - 国信安基地--值得信赖的IT教育专家
DotNet软件就业班
GBN100901Dot
Java就业培训班
GBJ100901Jav
Java+PHP就业班
GBJ100102送PH
嵌入式就业培训班
GBC100101嵌入式
Android机器人
针对Android前沿技术的发展、技... 我要参加>>
熊中华
就业单位:华为赛门铁克
岗位:软件开发工程师

刘钊
就业单位:杰华科技
岗位:软件测试工程师

班级动态


阳阳老师笔记系列:Java高级组件JTable

来源:国信安基地 | 作者:Caleb-哈密瓜 | 发布: 2009-12-31 | 关键词:阳阳老师,JTable | 查看: 319次



 

JTable 用来显示和编辑规则的二维单元表。它位于javax.swing包下面。例如用JTable编写的二维单元表如下图
 
构造方法摘要
JTable()
          构造默认的 JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。

JTable tableView = new JTable(); //不含有数据和列名

 
 JTable(int numRows, int numColumns)
          使用 DefaultTableModel 构造具有空单元格的 numRows 行和 numColumns 列的 JTable

JTable tableView = new JTable(4, 5); //构造一个4行、5列的JTable,但是不含有数据和列名

 
JTable(Object[][] rowData, Object[] columnNames)
          构造 JTable,用来显示二维数组 rowData 中的值,其列名称为 columnNames

//初始化数据
Object[][] rowData = {
       {"1001", "李汉", "软件部", new Double(3000)},
       {"1002", "朱泽", "软件部", new Double(3100)},
       {"1003", "刘宇", "经理部", new Double(3000)}
};
 
//初始化列名
Object[] columnNames = {"编号", "姓名", "部门", "月薪"};
 
JTable tableView = new JTable(rowData, columnNames); //创建一个JTable,且含有数据和列名

 
JTable(TableModel dm)
          构造 JTable,使用 dm 作为数据模型、默认的列模型和默认的选择模型对其进行初始化。

//初始化数据
Object[][] rowData = {
       {"1001", "李汉", "软件部", new Double(3000)},
       {"1002", "朱泽", "软件部", new Double(3100)},
       {"1003", "刘宇", "经理部", new Double(3000)}
};
 
//初始化列名
Object[] columnNames = {"编号", "姓名", "部门", "月薪"};
 
//实例化TableModel接口
TableModel tableModel = new DefaultTableModel(rowData, columnsName);
 
JTable tableView = new JTable(tableModel); //创建JTable,且含有数据和列名

 
注意:在创建JTable的时候,需要一个JScrollPane来显示滚动条(它可以包含水平和垂直的滚动条)
如果要实现上图的界面样式,程序如下:

package com.gxa.edu;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
 
/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2009</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class JTableTestFrame extends JFrame {
    public JTableTestFrame() {
        try {
            jbInit();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
 
    private void jbInit() throws Exception {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("JTable的应用");
        jPanel1.setLayout(borderLayout1);
        jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER);
        jScrollPane1.getViewport().add(jTable1);
        this.getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
        this.setSize(450, 350);
        this.setVisible(true);
    }
 
    JPanel jPanel1 = new JPanel();
    BorderLayout borderLayout1 = new BorderLayout();
    JScrollPane jScrollPane1 = new JScrollPane();
    //初始化数据
    Object[][] rowData = {
                         {"1001", "李汉", "软件部", new Double(3000)},
                         {"1002", "朱泽", "软件部", new Double(3100)},
                         {"1003", "刘宇", "经理部", new Double(3000)}
    };
    //初始化列名
    Object[] columnsName = {"编号", "姓名", "部门", "月薪"};
    DefaultTableModel dtm = new DefaultTableModel(rowData, columnsName);
    JTable jTable1 = new JTable(dtm);
 
    public static void main(String[] args) {
        new JTableTestFrame();
    }
}

 
总结:如果要实现一个JTable,需要用到Java API中的哪些类和接口,这些类和接口实际含义是什么
javax.swing.JTable:它是创建JTable组件的非常重要的类,它可以在JTable构建所需的列名和存储的数据。通过构造方法来实现
javax.swing.JScrollPane:在进行JTable的UI设计时候需要一个滚动面板,它是一个Swing Constrainter(容器)。那么加载JTable的方法

JScrollPane jScrollPane1 = new JScrollPane();
jScrollPane1.getViewport().add(JTable的对象);

 
javax.swing.table.TableModel:它是一个JTable数据模型接口,可以初始化列名、数据、获取数据模型中数据行数、对某一个方格或是多列设置是否可以编辑等等。
javax.swing.table.DefaultTableModel:它是TableModel接口的实现,其提供更大强大的操作JTable的功能。例如:添加一行或一列的操作、返回总行数、返回总列数、删除某一行或某一列的操作等等。

//初始化数据
    Object[][] rowData = {
                         {"1001", "李汉", "软件部", new Double(3000)},
                         {"1002", "朱泽", "软件部", new Double(3100)},
                         {"1003", "刘宇", "经理部", new Double(3000)}
    };
    //初始化列名
    Object[] columnsName = {"编号", "姓名", "部门", "月薪"};
    DefaultTableModel dtm = new DefaultTableModel(rowData, columnsName);
    JTable jTable1 = new JTable(dtm);

 
javax.swing.table. TableColumn:TableColumn 表示 JTable 中列的所有属性,如宽度、大小可调整性、编辑方格里面显示的内容。

//在方格中下拉框来显示
JComboBox comboBox = new JComboBox();
        comboBox.addItem("软件部");
        comboBox.addItem("人事部");
        comboBox.addItem("经理部");
        comboBox.addItem("测试部");
        comboBox.addItem("办公室");
        comboBox.addItem("财务部");
       
        TableColumn department = jTable1.getColumn("部门");
        department.setCellEditor(new DefaultCellEditor(comboBox));

 
javax.swing.DefaultCellEditor:定义了组件(如 JListBoxJComboBoxJTreeJTable)的值编辑器的任意对象需要实现的方法。