写个TableModel是可以,问题是如何使用这个TableModel来刷新JTable中的数据?该使用JTable的什么方法呢?
解决方案 »
- 为什么用system.out.println(str) 在控制台输出的中文都是乱码?
- Java如何使用多线程读取40M的文件?最好有实例
- 刚学java遇到的几个小问题
- 请求java题解,我是菜鸟
- J2SE SDK与J2EE SDK能不能同时安装?
- 除去重复的的值?求好方法!
- 关于端口复用问题?
- 如何让Jframe或者jdialog没有关闭按钮和最小化。最大化按钮
- 我的三星152S每次看到,都有一种惊艳的感觉,大力推荐!!!!!!顺便问个小问题
- Tread中的join是干什么的
- 在命令行输入appletviewer Run1.java,为什么没有显示??
- 求教Class.forName()的用法
在数据集改变后给JTable一个新的Model
在Java 2核心技术 卷2上有一个跟你的要求一样的例子
用一个JTable显示数据库中所有的表的数据
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import javax.swing.table.AbstractTableModel;public class DynamicTableModel extends AbstractTableModel
{
//private ResultSet rs=null;
private String[] sColumnNames=null;
private Object[][] oData=null;
private int iColumnCount=0;
private int iRowCount=0;
public DynamicTableModel(String[] sColumn,Object[][] oValue)
{
sColumnNames = sColumn;
oData = oValue;
iColumnCount = sColumn.length;
iRowCount=oValue.length;
}
public DynamicTableModel(ResultSet rs) throws SQLException
{
if (rs==null) throw new IllegalArgumentException();
ResultSetMetaData rsmd = rs.getMetaData();
iColumnCount = rsmd.getColumnCount();
sColumnNames = new String[iColumnCount];
oData = new Object[100][iColumnCount];
for (int i=1;i<=iColumnCount;i++)
{
sColumnNames[i-1] = rsmd.getColumnName(i)+" | "+rsmd.getColumnTypeName(i);
}
rs.beforeFirst();//因为不能保证未可滚动结果集,其他地方也要执行next()循环,所以这个无效,这个构造器也没有真正作用
while(rs.next())
{
String sData = null;
for (int i=1;i<iColumnCount;i++)
{
sData = rs.getString(i);
if (rs.wasNull()) sData="NULL";
oData[iRowCount][i-1] = sData;
}
iRowCount++;
}
System.out.println("iRowCount="+iRowCount);
}
public Class getColumnClass(int columnIndex)
{
if (columnIndex>=iColumnCount) return null;
return oData[0][columnIndex].getClass();
}
public String getColumnName(int columnIndex)
{
if (columnIndex>=iColumnCount) return "";
return sColumnNames[columnIndex];
}
public int getColumnCount()
{
return iColumnCount;
}
public int getRowCount()
{
return iRowCount;
}
public Object getValueAt(int row,int col)
{
return oData[row][col];
}
}另外一个问题:
JTable中横向调整Size时,设置什么属性可以让横向各列宽度不变,而是自动出现水平滚动条?