jTable滚动条
  利⽤ Java 开发数据库应⽤时,经常需要在⽤户界⾯上显⽰查询结果。我们可以利⽤ Vector 、 JTable 、 AbstractTableModel 等三个类较好地解决这⼀问题。
类 Vector :
  定义如下:
public class Vector extends AbstractList
implements List , Cloneable , Serializable{…}
类JTable:
  JTable组件是Swing组件中⽐较复杂的⼩件,⾪属于javax.swing包,它能以⼆维表的形式显⽰数据。类Jtable:定义如下:
public class JTable extends JComponent
implements TableModelListener,
Scrollable, TableColumnModelListener,
ListSelectionListener,
CellEditorListener, Accessible{…}
类AbstractTableModel:
  定义如下:
public abstract class AbstractTableModel extends Object
implements TableModel, Serializable{…}
  ⽣成⼀个具体的TableModel作为AbstractTableMode的⼦类,⾄少必须实现下⾯三个⽅法:
public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);
  我们可以建⽴⼀个简单⼆维表(5×5):
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() { return 5; }
public int getRowCount() { return 5;}
public Object getValueAt(int row, int col)
{ return new Integer(row*col); }
};
JTable table = new JTable(dataModel);
JScrollPane scrollpane = new JScrollPane(table);
数据库及其连接⽅法:
  我们采⽤Sybase数据库,数据库存放在数据库服务器中。路径为:D:WORKER,数据库名为:worker.dbf。具有以下字段:
字段名类型
Wno(职⼯号)          VARCHAR
Wname(职⼯名)        VARCHAR
Sex(性别)            VARCHAR
Birthday(出⽣⽇期)      DATE
Wage(⼯资)            FLOAT
  要连接此数据库,需使⽤java.sql包中的类DriverManager。此类是⽤于管理JDBC驱动程序的实⽤程序类。它提供了通过驱动程序取得连接、注册,撤消驱动程序,设置登记和数据库访问登录超时等⽅法。
  具体连接⽅法如下:
  定位、装⼊和链接SybDriver类。
driver="com.sybase.jdbc.SybDriver";
SybDriver sybdriver=(SybDriver)
Class.forName(driver).newInstance();
  注册SybDriver类。
  取得连接(SybConnection)对象引⽤。
user="sa";
password="";
url="jdbc:sybase:Tds:202.117.203.114:5000/WORKER";
SybConnection connection=
(Connection
(url,user,password);
建⽴完连接后,即可通过Statement接⼝进⾏数据库的查询与更改。
实现⽅法:
  对象声明。
  AbstractTableModel tm;
  //声明⼀个类AbstractTableModel对象
  JTable jg_table;//声明⼀个类JTable对象
  Vector vect;//声明⼀个向量对象
  JScrollPane jsp;//声明⼀个滚动杠对象
  String title[]={"职⼯号","职⼯名",
  "性别","出⽣⽇期","⼯资"};
  //⼆维表列名
  定制表格。
  实现抽象类AbstractTableModel对象tm中的⽅法:
  vect=new Vector();//实例化向量
  tm=new AbstractTableModel(){
  public int getColumnCount(){
  return title.length;}//取得表格列数
  public int getRowCount(){
  return vect.size();}//取得表格⾏数
  public Object getValueAt(int row,int column){
  if(!vect.isEmpty())
  return
  ((Vector)vect.elementAt(row)).elementAt(column);
  else
  return null;}//取得单元格中的属性值
  public String getColumnName(int column){
  return title[column];}//设置表格列名
  public void setValueAt
  (Object value,int row,int column){}
  //数据模型不可编辑,该⽅法设置为空
  public Class getColumnClass(int c){
  return getValueAt(0,c).getClass();
  }//取得列所属对象类
  public boolean isCellEditable(int row,int column){
  return false;}//设置单元格不可编辑,为缺省实现
  };
  定制表格:element表格横向滚动条
  jg_table=new JTable(tm);//⽣成⾃⼰的数据模型
  jg_table.setToolTipText("显⽰全部查询结果");
  //设置帮助提⽰
  jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);  //设置表格调整尺⼨模式
  jg_table.setCellSelectionEnabled(false);
  //设置单元格选择⽅式
  jg_table.setShowVerticalLines(true);//
  设置是否显⽰单元格间的分割线
  jg_table.setShowHorizontalLines(true);
  jsp=new JScrollPane(jg_table);//给表格加上滚动杠
  显⽰查询结果。
  连接数据库:已给出。
  数据库查询:
  Statement ateStatement();
  ResultSet uteQuery
  ("select * from worker");
  显⽰查询结果:
  veAllElements();//初始化向量对象
  tm.fireTableStructureChanged();//更新表格内容
  ()){
  Vector rec_vector=new Vector();
  //从结果集中取数据放⼊向量rec_vector中
  rec_vector.String(1));
  rec_vector.String(2));
rec_vector.String(3));
rec_vector.Date(4));
  rec_vector.addElement(new Float(5)));
  vect.addElement(rec_vector);
  //向量rec_vector加⼊向量vect中
  }
  tm.fireTableStructureChanged();
  //更新表格,显⽰向量vect的内容
  实现⽰图中记录前翻、后翻的效果,有两种⽅法:
  如果软件环境⽀持JDBC2.0,可直接利⽤rs.prevoius()和rs.next()获得记录,然后通过类JTextField中的setText()⽅法,显⽰出各个字段值。
  如果不⽀持JDBC2.0,则可利⽤向量Vector按⾏取出JTable中数据。⾃定义⼀个指针,⽤来记录位置。当指针加1时,取出上⼀⾏数据放⼊Vector中显⽰;指针减1时,取出下⼀⾏数据显⽰。显⽰⽅法同上。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。