关于 JTable 刷新绘制(repaint) 以及JTable各属性设置
关于 JTable 刷新绘制(repaint) 以及JTable各属性设置
关于 JTable 刷新绘制(repaint) java swing 说明:
本文典型应用于,当数据发生改变时,重新加载JTable数据,并且刷新,
令使用者可以立刻看到改变的结果。
使用JTable展示数据时,本部分对数据的增、删、改、查所引起的数据列
表的改变,可以进行实时刷新展示。而不论改变动作来自于本窗体还是外 来窗体。
1. 关于 JTable 的数据装载 以及 关于响应JTable的某些事件
说明:此部分包含构建java JTable表格; 响应表格变化引起的事件; 响应鼠标点击表格引起的事件; 1.1 构建Jtable 数据模型函数 1.1.1 构建Jtable title
此函数用于购建表格台头部分 public String[] jtableTitle() { int i;
String[] jtableTitle = new String[i];
/** 'i' means you will create table's column amount */ stringUser[0] = \stringUser[1] = \.......
stringUser[i-1] = \return jtableTitle; }
1.1.2 构建Jtable data structure
此函数用于购建表格数据结构部分,即往表格中填入数据: public Object[][] dataStruct() throws SQLException { /** throws SQLException means data from some db's table */
Object[][] dataStruct=null;
db.connect(); /** some link database code in here */ ResultSet rs = db.exeQuery(\ResultSet rscount = db.exeQuery(\tablename\
if (rs==null){emptyType=0;}else{emptyType=1;}
/** 'emptyType' tell programe table's data whether empty*/ switch (emptyType){ case 0:
dataUser = new Object[1][i]; dataUser[0][0]=\dataUser[0][1]=\dataUser[0][2]=\.....................
dataUser[0][i-1]=\rsemptyType=true;
/** means db's table is empty. nothing data will fill in JTable */ break; case 1: rscount.next(); int j = rscount.getInt(1);
/** means get table's data count amount*/ dataUser = new Object[j][i]; for (int x = 0; x < j; x++) { rs.next();
dataUser[x][0] = rs.getString(dbTableColumnName1); dataUser[x][1] = rs.getString(dbTableColumnName2);
dataUser[x][2] = rs.getString(dbTableColumnName3); ...........................
dataUser[x][i-1] = rs.getString(dbTableColumnNamei); rsemptyType=false;
/** means db's table have some data and code fill these data in JTable */ db.disconnect(); return dataStruct; }
1.1.3 将构建好的数据加载入Jtable
final JTable jTable1 = new JTable(dataStruct(),jtableTitle()) 1.2 JTable valueChanged() 监听事件 此函数用于监听当JTable发生变化时的事件
典型的应用,适用于将选中的Jtable的行数据,读入窗体中的text,combo等等控件。
方便进行修改(modify)或者删除(delete)操作。 public void
valueChanged(javax.swing.event.ListSelectionEvent e) { super.valueChanged(e); /** super means Jtable */
if (!this.isVisible()) { return; } /** if Jtable visible is false. stop execute code*/
if (!rsemptyType()) { return; }
/** get from 1.1.2 function 'dataStruct()' to judge data dataStruct whether null or have some data */ ListSelectionModel sm =
(ListSelectionModel)e.getSource();
int row = sm.getLeadSelectionIndex(); /** means get selected row number */
int colCount = this.getColumnCount(); /** means get Jtable's Column amount */
String[] sa = new String[colCount]; for (int col=0; col sa[col] = (String)this.getValueAt(row, col); } jTextField1.setText(sa[0]); jTextField2.setText(sa[1]); jTextField3.setText(sa[2]); ........................... jTextField4.setText(sa[colCount-1]); /** above code means fill the selected row's data in text control by every column*/ }