在构造jtable时,怎样向它传递数组或变量值!!! 如果要用变量,就采用tablemodel吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package thtf.test.common;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: TsingHua tongfang Co. Ltd</p> * @author Hou Guangmin * @version 1.0 * 专用的表格模型,用于显示对数据库查询的结果集. * 该类还实现了序列化和克隆接口,方便传输操作。 * 该类还实现了对数据的过滤显示 */import java.sql.*;import javax.swing.table.*;import java.util.*;import javax.swing.event.*;import java.io.Serializable;import java.lang.*;public class MyTableModel extends AbstractTableModel implements Serializable,Cloneable{ String[] columnNames=new String[0]; //存储列名 Object[][] dataRows; //存储表格里的数据 TableModelEvent el; //表格模型的监听事件 int columnsCount; //数据源的列数 int rowsCount; //数据源的行数 protected ArrayList indexList = new ArrayList();//存放筛选后行ID的数组 protected String index;//筛选的标准值 protected boolean isbeFilter=false;//是否被过滤的标志 public MyTableModel() { } /** * 设置原始的结果数据集 */ public MyTableModel(java.sql.ResultSet rs) //public MyTableModel(ResultSet results) { if (rs==null) { System.out.println("no results "); return; } try { ResultSetMetaData metadata=rs.getMetaData(); if (metadata==null) { System.out.println("no data "); return; } columnsCount=metadata.getColumnCount();//列数 columnNames=new String[columnsCount]; for (int i=0;i<columnsCount;i++) { columnNames[i]=metadata.getColumnLabel(i+1); }//填充列名 int i=0; while (rs.next()) { i++;} //计算行数 rowsCount=i; i=0; rs.beforeFirst(); dataRows=new Object[rowsCount][columnsCount]; boolean more = rs.next(); while( more ) { for(int j=0;j<columnsCount;j++) { dataRows[i][j]=rs.getString(j+1); } i++; more = rs.next(); } fireTableChanged(el); //通知表格的视图,数据已经被改变 } catch (SQLException e) { System.err.println(e); } } /*设置筛选的值*/ public synchronized void setFilterIndex(String index) { this.index = index; indexList.clear(); isbeFilter=true;//设置已过滤状态 // 检索数据源,得到新的索引 for (int z = 0; z < rowsCount; z++) { String value=(String)dataRows[z][0]; if (index.equals(value)) indexList.add(new Integer(z)); } // 通知组件行数已被改变 this.fireTableChanged(new TableModelEvent(this)); } /*得到标准筛选值*/ public String getIndex() { return this.index; } /*得到表格的列数*/ public int getColumnCount() { return columnsCount; } /*得到表格的行数*/ public int getRowCount() { //如果被过滤则返回新的行值 if (isbeFilter) return indexList.size(); else return rowsCount; } /*得到指定列的列名*/ public String getColumnName(int column) { return columnNames[column]==null?"No name":columnNames[column]; } public Object getValueAt(int row,int col) { if (isbeFilter) { int newIndex = ((Integer) indexList.get(row)).intValue(); return dataRows[newIndex][col]; } else return ((String)(dataRows[row][col])); } /* model class define is over*/} 代码如下 jnative 调用dll文件 JTable中加入JCheckBox需要重写AbstractTableModel中的getColumnClass() 八折 转让 IT培训认证考试 帐户 请问谁有《JBuilder开发人员指南》,发给我好吗 使用stylereport中文导出PDF乱码如何解决呢? 请教个SocketException Socket is closed异常问题 Resin和IIS的配合 在JBUILDER 中如何引用一个JDBC驱动? 关于插入图片的问题 一个简单的全局变量的问题 谁知道哪里有Visual AGe fot java下载吗?最新版本是多少?
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: TsingHua tongfang Co. Ltd</p>
* @author Hou Guangmin
* @version 1.0
* 专用的表格模型,用于显示对数据库查询的结果集.
* 该类还实现了序列化和克隆接口,方便传输操作。
* 该类还实现了对数据的过滤显示
*/
import java.sql.*;
import javax.swing.table.*;
import java.util.*;
import javax.swing.event.*;
import java.io.Serializable;
import java.lang.*;public class MyTableModel extends AbstractTableModel
implements Serializable,Cloneable
{
String[] columnNames=new String[0]; //存储列名
Object[][] dataRows; //存储表格里的数据
TableModelEvent el; //表格模型的监听事件
int columnsCount; //数据源的列数
int rowsCount; //数据源的行数
protected ArrayList indexList = new ArrayList();//存放筛选后行ID的数组
protected String index;//筛选的标准值
protected boolean isbeFilter=false;//是否被过滤的标志
public MyTableModel()
{
}
/**
* 设置原始的结果数据集
*/
public MyTableModel(java.sql.ResultSet rs) //public MyTableModel(ResultSet results)
{
if (rs==null)
{ System.out.println("no results ");
return;
}
try
{
ResultSetMetaData metadata=rs.getMetaData();
if (metadata==null)
{ System.out.println("no data ");
return;
}
columnsCount=metadata.getColumnCount();//列数
columnNames=new String[columnsCount];
for (int i=0;i<columnsCount;i++)
{
columnNames[i]=metadata.getColumnLabel(i+1);
}//填充列名
int i=0;
while (rs.next()) { i++;} //计算行数
rowsCount=i;
i=0;
rs.beforeFirst();
dataRows=new Object[rowsCount][columnsCount];
boolean more = rs.next();
while( more )
{
for(int j=0;j<columnsCount;j++)
{
dataRows[i][j]=rs.getString(j+1);
}
i++;
more = rs.next();
}
fireTableChanged(el); //通知表格的视图,数据已经被改变
}
catch (SQLException e)
{
System.err.println(e);
}
}
/*设置筛选的值*/
public synchronized void setFilterIndex(String index)
{
this.index = index;
indexList.clear();
isbeFilter=true;//设置已过滤状态
// 检索数据源,得到新的索引
for (int z = 0; z < rowsCount; z++)
{
String value=(String)dataRows[z][0];
if (index.equals(value))
indexList.add(new Integer(z));
}
// 通知组件行数已被改变
this.fireTableChanged(new TableModelEvent(this));
}
/*得到标准筛选值*/
public String getIndex()
{
return this.index;
}
/*得到表格的列数*/
public int getColumnCount()
{
return columnsCount;
}
/*得到表格的行数*/
public int getRowCount()
{ //如果被过滤则返回新的行值
if (isbeFilter) return indexList.size();
else return rowsCount;
}
/*得到指定列的列名*/
public String getColumnName(int column)
{
return columnNames[column]==null?"No name":columnNames[column];
}
public Object getValueAt(int row,int col)
{
if (isbeFilter)
{
int newIndex = ((Integer) indexList.get(row)).intValue();
return dataRows[newIndex][col];
}
else return ((String)(dataRows[row][col]));
}
/* model class define is over*/
}