如何在jtable中解决这个错误?



我想在表中显示来自数据库的数据。我得到这个错误"非静态变量jtable1不能从静态上下文中引用"。帮我解决这个错误

st.executeQuery("select * from course" );
                 ResultSet rs = st.getResultSet();
                 ResultSetMetaData md = rs.getMetaData();
                 int c_count = md.getColumnCount();
                 Vector data = new Vector(c_count);
                 Vector row = new Vector(c_count);
                 Vector colname = new Vector(c_count);
                 for(int i=0;i<c_count;i++)
                 {
                     colname.addElement(md.getColumnName(i));
                 }
                 while(rs.next())
                 {
                 for(int i=0;i<c_count;i++)
                 {
                   row.addElement(rs.getObject(i));  
                 }
                 data.addElement(row);
                 row = new Vector(c_count);
                 }
                 DefaultTableModel model = new DefaultTableModel(data,colname);
                 jTable1.setModel(model);

main方法有一个静态上下文,因此它不能直接访问任何实例变量。假设您有一个名为Foo的类,它具有静态main方法和私有变量jTable1。首先,您应该为jTable1变量添加一个getter,其签名为

public JTable getTable() {
 return jTable1;
}

接下来,在main方法中创建Foo

的实例
Foo fooInstance = new Foo();

现在,您可以如下所示设置模型:

DefaultTableModel model = new DefaultTableModel(data,colname);
fooInstance.getTable().setModel(model);

最后,Foo类看起来像

public class Foo {

     private javax.swing.JTable jTable1;
     public JTable getTable() {
          return jTable1;
     }
     public static void main(String[] args) {
          //your code
          Foo fooInstance = new Foo();
          DefaultTableModel model = new DefaultTableModel(data,colname);
          fooInstance.getTable().setModel(model);
           //your code
     }
}

一般来说,这个主题是你必须熟悉的东西,所以看看官方的Java教程http://docs.oracle.com/javase/tutorial/或只是谷歌它

相关内容

  • 没有找到相关文章

最新更新