swing 表格

SWING很好用,但是SWING里的表格确实比较难搞的。第一次用SWING的表格输出数据库的信息的时候出乎了我的意料之外。以下就是我个人使用SWING的表格的心得。

       首先,我们先讨论在SWING中如何创建表格。创建表格有几个不同的构建方法:

JTable()
          构造默认的 JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化。
 
JTable(int numRows, int numColumns)
          使用 DefaultTableModel 构造具有空单元格的 numRows 行和 numColumns 列的 JTable。
 
JTable(Object[][] rowData, Object[] columnNames)
          构造 JTable,用来显示二维数组 rowData 中的值,其列名称为 columnNames。
 
JTable(TableModel dm)
          构造 JTable,使用 dm 作为数据模型、默认的列模型和默认的选择模型对其进行初始化。
 
JTable(TableModel dm, TableColumnModel cm)
          构造 JTable,使用 dm 作为数据模型、cm 作为列模型和默认的选择模型对其进行初始化。
 
JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm)
          构造 JTable,使用 dm 作为数据模型、cm 作为列模型和 sm 作为选择模型对其进行初始化。
 
JTable(Vector rowData, Vector columnNames)
          构造 JTable,用来显示 Vectors 的 Vector (rowData) 中的值,其列名称为 columnNames。
 

在这次试验当中我所使用的是JTable(Object[][] rowData, Object[] columnNames)方法。其中rowData是二维的数组包含的是表格的各个单元格的内容,columnNames是一个包含表格列名的数组。往往我们从数据库中输出数据的时候列是固定的,当时行却不是固定的。所以要输出数据关键在于把rowData与数据库的操作结合在一起。所以算法还是得要自己来写,这相当麻烦,开发效率由此也就会降低了。

    在这个工程中有2个文件。一个是表现层文件mywindow.java即显示的主窗口,一个是业务逻辑文件MySqlCon.java主要是用于和数据库的操作。

    mywindow.java文件的代码在这里就不多说了,代码大多是系统自动生成的,就是在该文件中添加一个调用MySqlCon.java的方法:

MySqlCon m=new MySqlCon(frame);//传递一个JFrame对象到业务逻辑文件中

m.selectLog();//该方法接受数据库信息并创建表格的方法

 

下面主要讲解MySqlCon.java

以下是核心代码:

 

//创建表格和获取数据库信息的方法

public void selectLog() {

       //创建一个二维的对象数组,数组的行数由方法getNum()可得到,也就是表中的记录数量。数组的

       //列是根据表已经固定了的。这样二维数组就可以与数据表具有一致性了

       Object[][] row = new Object[getNum()][5];

       int i = -1;//初始化计数器,用于记录行的记录

       try {

           BulidCon();//调用数据库的方法,在这没给出

           rs = stmt.executeQuery("select * from cont");

           while (rs.next()) {//进入循环体

              i++;//当前的表格行的序号

              for (int j = 0; j < 5; j++) {//进入列的循环体,按顺序给列添加值

row[i][j] = rs.getString(j + 1);//取出数据的第i行第j+1列的值添加到二//维数组中

              }

           }

          

           //构造表格的列的名称

           String[] name = { "ID", "tid", "title", "content", "ather" };

          

           //创建一个滚动条容器,是表格的容器

           final JScrollPane scrollPane = new JScrollPane();

           scrollPane.setBounds(120, 130, 350, 100);

           jf.getContentPane().add(scrollPane);

 

           //创建一个表格,按照上面定好的参数

           JTable table = new JTable(row, name);

           table.setEnabled(false);//表格为不可编辑

           table.setRowHeight(20);//行高为20px

           scrollPane.setViewportView(table);

//将表格添加到滚动条容器中,使表格带有滚动条了

 

       } catch (Exception e) {

           System.out.println(e.toString());

       }

    }

 

//铺助的方法,用于统计表中的记录个数

    public int getNum() {

       int i = 0;

       try {

           BulidCon();

           rs = stmt.executeQuery("select count(*) as num from cont");

           rs.next();

           i = Integer.parseInt(String.valueOf(rs.getInt("num")));

       } catch (Exception e) {

           System.out.println(e.toString());

       }

       return i;

    }

 

 

该方法是可以达到了把数据库的信息以表格的形式在SWING界面里显示了,但是还有个遗留的问题。表格的列宽还是无法设置固定的大小。目前暂不研究。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值