我想在表中显示数据库中的数据。我收到了这个错误:“无法从静态上下文引用非静态变量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);发布于 2013-03-09 21:46:50
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 tutorial http://docs.oracle.com/javase/tutorial/或直接在谷歌上搜索它
https://stackoverflow.com/questions/15310114
复制相似问题