JTable
class SimpleTableModel extends AbstractTableModel
{
Vector columnNames = new Vector();
Vector data = new Vector();
//获取字段的名称
public SimpleTableModel(ResultSet rs)
{
try
{
ResultSetMetaData rsmd=rs.getMetaData();
for(int i=1;i<=rsmd.getColumnCount();i++)
{
columnNames.addElement(rsmd.getColumnName(i));
}
//获取记录集
while(rs.next())
{
for(int i=1;i<=rsmd.getColumnCount();i++)
{
System.out.println(rs.getString(i));//我想用这一句输出
//数据进行验证,
可是提示我没有数据
data.addElement(rs.getObject(i));
}
}
}
catch(SQLException ex)
{
System.err.println("SQLException: " + ex.getMessage());
System.err.println("SQLState: " + ex.getSQLState());
System.err.println("Message: " + ex.getMessage());
System.err.println("Vendor: " + ex.getErrorCode());
}
}
public int getColumnCount()
{
return columnNames.size();
}
public int getRowCount()
{
System.out.println(data.size());
return data.size();
}
public String getColumnName(int col)
{
System.out.println((String)columnNames.elementAt(col));
return (String)columnNames.elementAt(col);
}
public Object getValueAt(int row, int col)
{
// System.out.println(row);
// System.out.println(col);
// System.out.println((String)data.elementAt(row*getColumnCount()+col));
return (String)data.elementAt(row*getColumnCount()+col);
}
public boolean isCellEditable(int row, int col)
{
if (col == 0) {return false;}
else {return true; }
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
{
return;
}
}
//生成Table的语句
JTable table ;
JScrollPane scrollPane = new JScrollPane(table);
SimpleTableModel myModel = new SimpleTableModel(rs);
table = new JTable(myModel);
为什么不出现表格,是否要进行刷新?大家帮我找找错误呀
问题点数:10、回复次数:7Top
1 楼yanleon1228()回复于 2004-12-02 12:05:46 得分 0
大家帮我看看呀!而且我发现一个奇怪的问题
如果不加System.out.println(rs.getString(i));这句话,返回的行值就是对的,可是一有这句话,返回的行值就是0,这是为什么呀?
帮帮忙吧,被困了两天了Top
2 楼zhaohao19853(小人物)回复于 2004-12-02 12:16:50 得分 0
你干嘛要加这么一句话?
不加又不干扰程序本身的
也有可能是你位置放的不对Top
3 楼zhaohao19853(小人物)回复于 2004-12-02 12:20:00 得分 5
for循环好象有问题
你获取的字段不是放在一个数组里的嘛????Top
4 楼yanleon1228()回复于 2004-12-02 16:12:08 得分 0
那句话是调试用的,不要了。
可是现在表格不显示数据,为什么呀
class SimpleTableModel extends AbstractTableModel
{
Vector columnNames = new Vector();
Vector data = new Vector();
//获取字段的名称
public SimpleTableModel(ResultSet rs)
{
try
{
ResultSetMetaData rsmd=rs.getMetaData();
for(int i=1;i<=rsmd.getColumnCount();i++)
{
columnNames.addElement(rsmd.getColumnName(i));
}
//获取记录集
while(rs.next())
{
for(int i=1;i<=rsmd.getColumnCount();i++)
{
data.addElement(rs.getObject(i));
}
}
}
catch(SQLException ex)
{
System.err.println("SQLException: " + ex.getMessage());
System.err.println("SQLState: " + ex.getSQLState());
System.err.println("Message: " + ex.getMessage());
System.err.println("Vendor: " + ex.getErrorCode());
}
}
public int getColumnCount()
{
return columnNames.size();
}
public int getRowCount()
{
// System.out.println(data.size());
return data.size()/columnNames.size();
}
public String getColumnName(int col)
{
System.out.println((String)columnNames.elementAt(col));
return (String)columnNames.elementAt(col);
}
public Object getValueAt(int row, int col)
{
return (String)data.elementAt(row*getColumnCount()+col);
}
public boolean isCellEditable(int row, int col)
{
if (col == 0) {return false;}
else {return true; }
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
{
return;
}
}
//生成Table的语句
JTable table ;
JScrollPane scrollPane = new JScrollPane(table);
SimpleTableModel myModel = new SimpleTableModel(rs);
table = new JTable(myModel);
我把程序稍微改了一下Top
5 楼yanleon1228()回复于 2004-12-02 18:04:53 得分 0
大家帮忙看看呀Top
6 楼xuan9932()回复于 2004-12-03 04:10:24 得分 5
试试这样
Vector columnNames = new Vector();
Vector data = new Vector();
public SimpleTableModel(ResultSet rs)
{
try
{
ResultSetMetaData rsmd=rs.getMetaData();
for(int i=1;i<=rsmd.getColumnCount();i++)
{
columnNames.addElement(rsmd.getColumnName(i));
}
//获取记录集
while(rs.next())
{
for(int i=1;i<=rsmd.getColumnCount();i++)
{
data.addElement(rs.getObject(i));
(这里面应该是一个2维的表,你自己写了,再弄一个vector 存你数据库每一行,然后把这些vector 存到data 里去)
}
}
}
class myModel extends DefaultTableModel
{
public myModel(Vector data,Vector columnNames)
{
super(data,columnNames);
}
public Class getColumnClass(int col)
{
Vector v=(Vector) dataVector.elementAt(0);
return v.elementAt(col).getClass();
}
public boolean isCellEditable(int row,int col)
{
Class columnClass=getColumnClass(col);
return columnClass!=ImageIcon.class &&columnClass!=String.class;
}
}
然后
myModel mm=new myModel(columnNames ,data)
JTable jt=new JTable(mm);
Top
7 楼yanleon1228()回复于 2004-12-03 11:48:03 得分 0
谢谢各位,我找到答案了,是因为添加scrollpane,和table的顺序错误Top




