-2

我想将数据库中的数据显示到 JList 中。但是它给出的错误是

non static variable list cannot be referenced from a static context" 
     at line "list.setModel(listModel)". 

我应该怎么办?

Connection con=DriverManager.getConnection("jdbc:odbc:Records");
Statement st=con.createStatement();
DefaultListModel listModel=new DefaultListModel();
ResultSet rs=st.executeQuery("Select * from User_table1");
    while(rs.next()) {
      String name=rs.getString("Filename");
      listModel.addElement(name);
      System.out.println(name);
   }
list.setModel(listModel);
rs.close();
st.close();
4

2 回答 2

4

你有两种方法可以解决这个问题:

  1. 使这个函数非静态
  2. 使对象列表静态

所以如果你需要在静态上下文中调用这个函数,你应该使用第二种方式。如果您需要这个来保护此类类型的任何对象的 list 值,那么您应该使用第一种方法。

我赞同@Andrew Thompson 在第一句话中所说的话。

于 2013-05-09T09:06:54.763 回答
1

想象一下,你有一个蓝图。然后,您根据该蓝图生产——例如——一部手机。稍后,您拿起剪刀,剪下显示 SD 卡的蓝图的一部分,并尝试将该卡插入手机。

它行不通。

这就是为什么您不能static从方法中引用非成员的原因static。因为我写的是真的,反之亦然。

我建议您阅读一些有关面向对象设计的内容。例如,本书是一本关于 java 的优秀书籍。如果您仔细阅读它,您将了解问题的根源。

顺便说一句,您的编译器会告诉您问题出在哪里以及您实际上不需要 SO 来获得答案的地方,只需阅读控制台即可。

正如其他人在 java 是一种面向对象的语言之前所说的那样,鼓励您使用它们,因此static应谨慎使用成员。

于 2013-05-09T09:03:39.613 回答