高分求助!急!JTable的运行出错!
jrs05 2007-10-11 12:27:47 我要写个进销货管理系统,用GUI实现,遇到一个问题:在点击"商品查询"的时候可以实现从数据库调出所有商品的信息,起初我用JTable处理
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;
public class Info extends JFrame
{
Connection con;
Statement st;
ResultSet rs;
String[][] rowData;
String[] columnNames ={"商品编号", "商品名","商品类别","产商","进价(元)","标价(元)","库存(单位)"};
JTable jt;
JScrollPane jsp;
Container c=getContentPane();
int i=0;
public Info(){
try{
init();
pack();
}
catch(Exception e){}
}
public void init(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:jxh", "www", "111");
st=con.createStatement();
rs=st.executeQuery("Select*From info");
while(rs.next()){
i+=1;
}
rowData=new String[i][6];//计算出商品总数,然后创建一个以商品总数大小为一维大小的数组.
int j=0;
while(rs.next()){
rowData[j][0]=rs.getString(1);
rowData[j][1]=rs.getString(2);
rowData[j][2]=rs.getString(3);
rowData[j][3]=rs.getString(4);
rowData[j][4]=rs.getString(5);
rowData[j][5]=rs.getString(6);
rowData[j][6]=rs.getString(7);
j+=1;
}
jt=new JTable(rowData,columnNames); /*构造方法JTable(Object[][] rowData, Object[] columnNames)*/
jsp = new JScrollPane();
jsp.getViewport().add(jt,null);
jsp.setBounds(new Rectangle(2, 10, 433, 185));
setBounds(250, 250, 450, 350);
c.add(jsp,BorderLayout.CENTER);
setTitle("商品查看");
setVisible(true);
}
catch(Exception e){
String error=e.getMessage();
JOptionPane.showMessageDialog(null,error);
}
}
public static void main(String[] args ){
new Info();
}
}
但是运行出错,运行的界面见附件里的errorPic.gif,错误代码见附件里的error.txt
后来我改了一下,用以下代码代替以上的JTable,
TableModel dataModel = new AbstractTableModel() {
public int getColumnCount() { return 7; }
public int getRowCount()
{
return i;
}
public Object getValueAt(int row, int col) { return new Integer(row*col); }
};
jt=new JTable(dataModel);
但我不知道如何修改它的表头(用以上代码得到的运行界面如附件里的1.gif),也就是要将表头设为 "商品编号", "商品名","商品类别","产商","进价(元)","标价(元)","库存(单位)";然后怎么实现表中的数据是通过数据库查询得到的数据,用DriverManager.getConnection("jdbc:odbc:jxh", "www", "111");
-------------------还有,Java中有没有能分页显示以上内容的类,就是实现行列显示大量内容的,如果有请给出用法----------------------------------------