• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Java中基于自定義表格模型的表格實(shí)現(xiàn)方法研究

      2012-04-29 18:08:09潘國榮
      電腦知識與技術(shù) 2012年15期
      關(guān)鍵詞:表格

      潘國榮

      摘要:JTable是Java Swing開發(fā)工具包中的表格組件。該文介紹了通過定義一個自定義表格模型來構(gòu)造和使用表格的方法。

      關(guān)鍵詞:Java;表格;表格模型

      中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)15-3583-03

      Research on Implementation Method of Table Based on Custom Table Model in Java

      PAN Guo-rong

      (Chang Zhou Liu Guo-jun Higher Vocational and Technical School, Changzhou 213025, China)

      Abstract:Jtable is the table componets of Java Swing development kit. This paper discusses the method of constructing and using tables by defining a custom model.

      Key words: Java; table; table model

      因Java程序設(shè)計語言具有強(qiáng)大的功能,正越來越多地被軟件開發(fā)人員所使用。使用Java既可以編寫基于Windows的圖形用戶界面GUI程序,也可以編寫在Internet網(wǎng)絡(luò)環(huán)境下運(yùn)行的Web應(yīng)用程序?,F(xiàn)在編寫GUI程序主要使用Swing開發(fā)工具包,它以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格。如果要在程序界面中顯示大量數(shù)據(jù),并且經(jīng)常和數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行交互,可以使用Swing開發(fā)工具包中的表格JTable組件,該組件是較為復(fù)雜的組件之一。

      JTable組件控制數(shù)據(jù)的顯示方式,但JTable組件中存儲的數(shù)據(jù)是由表格模型決定的,因此在我們創(chuàng)建JTable組件前,應(yīng)先創(chuàng)建一個表格模型。Swing開發(fā)工具包中提供了好幾種表格模型類,如DefaultTableModel、AbstractTableModel,但直接使用它們來構(gòu)造表格還顯得不太方便和靈活,通??梢宰约憾x一個模型類來構(gòu)造表格。

      1自定義表格模型的定義

      可以將Swing中提供的抽象表格模型類AbstractTableModel作為基類,派生出一個表格模型類,在該類中,重新定義了構(gòu)造方法以及向表格中添加數(shù)據(jù)行的方法、刪除表格中數(shù)據(jù)行的方法、設(shè)置和讀取表格單元格中數(shù)據(jù)的方法及獲取表格中行數(shù)的方法等,通過設(shè)計這些方法,大大方便了對表格中數(shù)據(jù)的操縱。

      自定義表格模型類MyTableModel.java的定義如下:

      import java.util.*;

      import java.sql.*;

      import javax.swing.table.*;

      import javax.swing.*;

      public class MyTableModel extends AbstractTableModel

      { private Vector content=null; //存放表格數(shù)據(jù)的Vector

      private String[] title_name; //存放表格標(biāo)題的數(shù)組

      private int colCnt; //表格中的列數(shù)

      private int colSt,colEnd; //可以編輯列的起止索引號

      //構(gòu)造方法

      public MyTableModel(String[] title_name,int n)

      {this.title_name=new String[n];

      colCnt=n;

      for(int i=0;i

      { this.title_name[i]=new String();

      this.title_name[i]=title_name[i];

      }

      content=new Vector();

      }

      //添加一行,數(shù)據(jù)行存放在Vector類型的row

      public void addRow(Vector row)

      {content.add(row);

      }

      //添加多行,數(shù)據(jù)行存放在rows中,rows中每一個對象是一個Vector類型的row

      public void addRows(Vector rows)

      {for(int i=0;i

      { content.add(rows.get(i));

      }

      }

      //刪除一行

      public void removeRow(int row)

      {content.remove(row);

      }

      //刪除所有行,全部刪除

      public void removeRows(int row,int count)

      {for(int i=0;i

      { if(content.size()>row)

      { content.remove(row);

      }

      }

      }

      //獲取行數(shù)

      public int getRowCount(){return content.size();}

      //獲取某一單元格的值

      public Object getValueAt(int row,int col)

      {return ((Vector)content.get(row)).get(col);}

      //更新表格中某一單元格的值

      public void setValueAt(Object value,int row,int col)

      {((Vector)content.get(row)).remove(col);

      ((Vector)content.get(row)).add(col,value); this.fireTableCellUpdated(row,col);

      }

      //設(shè)定可編輯列的起止范圍,從colSt到colEnd

      public void setColumnEditable(int colSt,int colEnd)

      {this.colSt=colSt;

      this.colEnd=colEnd;

      }

      //決定表格中哪些單元格的值可以修改,返回false表示不能修改

      public boolean isCellEditable(int rowIndex,int columnIndex)

      {

      //序列號不能修改

      if(columnIndex>=colSt && columnIndex<=colEnd)

      { return true;

      }

      return false;

      }

      //獲取列名

      public String getColumnName(int col)

      { return title_name[col];

      }

      //獲取列數(shù)

      public int getColumnCount()

      { return title_name.length;

      }

      }

      2自定義表格模型的使用

      表格模型定義好后,要使用表格就比較方便了。下面通過從數(shù)據(jù)庫學(xué)生情況表(學(xué)號:ssno,姓名:ssname,性別:ssex,備注:ss? note)中將數(shù)據(jù)取至表格中來說明其主要步驟。

      2.1定義表格標(biāo)題String數(shù)組、JTable組件對象、及自定義表格模型MyTableModel的對象

      String[] heads={"序號","學(xué)號","姓名","性別","備注"}; JTable table ;

      MyTableModel model;

      2.2生成JTable組件對象、自定義表格模型MyTableModel的對象

      model=new MyTableModel(heads,5); table=new JTable(model);

      p.add(new JScrollPane(table));

      2.3從數(shù)據(jù)庫中查詢數(shù)據(jù),將數(shù)據(jù)填充至表格中

      Vector row;

      Vector rows=new Vector();

      int i=1;

      try

      { Statement stat=ScoreMis.con.createStatement(); // ScoreMis為主類

      ResultSet result=stat.executeQuery("select * from sstudent where left(ssno,4)="+cursc+" order by ssno");// cursc為代表當(dāng)前班級的成員變量

      while(result.next())

      {row=new Vector();

      row.add(String.valueOf(i++));

      row.add(result.getString("ssno"));

      row.add(result.getString("ssname"));

      row.add(result.getString("ssex"));

      row.add(result.getString("ssnote"));

      rows.add(row);

      }

      model.addRows(rows);

      model.fireTableDataChanged();}

      catch(SQLException e2)

      { JOptionPane.showMessageDialog(this, "操作數(shù)據(jù)庫出錯:"+e2);

      }

      catch(Exception e3)

      { JOptionPane.showMessageDialog(this, "出現(xiàn)其他錯誤:"+e3);

      }

      3結(jié)束語

      通過上述例程代碼可以看出,在使用了自定義表格模型后,表格的構(gòu)造和表格中數(shù)據(jù)的填充就顯得非常方便了,并且可以通過調(diào)用表格模型中的相關(guān)方法來對表格中的數(shù)據(jù)進(jìn)行處理,這大大降低了初學(xué)者學(xué)習(xí)使用表格組件的難度,也可以程序提高開發(fā)人員的工作效率。

      參考文獻(xiàn):

      [1]肖孟強(qiáng),張忠義.Java程序設(shè)計基礎(chǔ)[M].北京:人民郵電出版社,2003.

      [2]李鐘尉,陳丹丹.Java項(xiàng)目開發(fā)案例全程實(shí)錄[M].北京:清華大學(xué)出版社,2011.

      猜你喜歡
      表格
      《現(xiàn)代臨床醫(yī)學(xué)》來稿表格要求
      《現(xiàn)代臨床醫(yī)學(xué)》來稿表格要求
      統(tǒng)計表格的要求
      統(tǒng)計表格的要求
      統(tǒng)計表格的要求
      本刊表格的要求
      定襄县| 勃利县| 文安县| 瑞丽市| 余庆县| 苏州市| 札达县| 陈巴尔虎旗| 泾川县| 弥渡县| 津南区| 丰城市| 连州市| 贡嘎县| 策勒县| 石柱| 成安县| 夏津县| 富蕴县| 隆尧县| 新沂市| 舟山市| 乌拉特前旗| 应用必备| 巴楚县| 色达县| 中方县| 诏安县| 临汾市| 治多县| 洪江市| 于都县| 七台河市| 武乡县| 宽城| 巴中市| 临朐县| 安国市| 涪陵区| 汾阳市| 雷波县|