用java创建表格的两种形式(1)

来源:互联网 发布:物理模拟软件 编辑:程序博客网 时间:2024/06/05 10:16

创建表格需创建数据模型,有两种数据模型DefaultTableModel和AbstractTableModel,DefaultTableModel是java_api中提供的类可以直接使用, AbstractTableModel是接口需覆盖其中的方法,不多,就三种方法:getRowCount(),getColumnCount(),getValueAt()。

1.用 DefaultTableModel创建表格

DefaultTableModel是java api中提供的类,用它可以很容易的创建表格,如创建4行3列的表格:

javax.swing .table.DefaultTableModel dtm = new javax.swing .table.DefaultTableModel(4,3);

javax.swing.JTable jt = new javax.swing.JTable(dtm);

好了表格创建好了,只需把 jt 加入窗口就可使用了。其他一些对表格的操作java api已经提供,可以直接查java api。

2.用 AbstractTableModel 创建表格

用AbstractTableModel创建表格需要写一个类实现接口,类中需要包含一个二维数组,二维数组中的内容就是表格中的内容,如:

 

public class TableValues extends AbstractTableModel{

    public int[][] values = {{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7},{4,5,6,7,8}};  //二维数组

    public int getRowCount() {                    //覆盖getRowCount(),返回行数

       return values.length;

    }

    public int getColumnCount() {              //覆盖getColumnCount(),返回列数

       return values[0].length;

    }

    public Object getValueAt(int rowIndex, int columnIndex) {//返回指定位置元素

       return values[rowIndex][columnIndex];

    }

}

接着就是如何来创建表格,如下:

 

javax.swing.JTable jt = new javax.swing.JTable(new TableValues());

下面的代码是包含两种数据模型DefaultTableModel和AbstractTableModel的例子

 

import javax.swing.table.AbstractTableModel;

 

import java.awt.*;

import javax.swing.*;

 

public class TableValues extends AbstractTableModel{

       

    public int[][] values = {{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7},{4,5,6,7,8}};

    public int getRowCount() {

       return values.length;

    }

    public int getColumnCount() {

       return values[0].length;

    }

    public Object getValueAt(int rowIndex, int columnIndex) {

       return values[rowIndex][columnIndex];

    }

}

 

public class SimpleTableTest extends JFrame{

    public SimpleTableTest() {

        Container pane = getContentPane();

        pane.setLayout(new BorderLayout());

        TableValues tv = new TableValues();

        table =new JTable(tv);

        table1 = new JTable(new javax.swing.table.DefaultTableModel(4, 5));

        pane.add(table,BorderLayout.CENTER);

        pane.add(table1,BorderLayout.SOUTH);

    }

    protected JTable table,table1;

    public static void main(String[] args){

        SimpleTableTest stt = new SimpleTableTest();

        stt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        stt.setSize(400, 200);

        stt.setVisible(true);

    }

}

执行结果: