Java 无法从静态上下文引用非静态变量列表

Java 无法从静态上下文引用非静态变量列表,java,swing,compiler-errors,jlist,defaultlistmodel,Java,Swing,Compiler Errors,Jlist,Defaultlistmodel,我想将数据库中的数据显示到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(); De

我想将数据库中的数据显示到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();

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

这行不通

这就是为什么不能从
static
方法引用非
static
成员的原因。因为我写的都是真的,维卡也一样

我建议你读一些关于面向对象设计的书。对于exmaple来说,这本书是一本关于java的极好的书。如果你边读边注意,你就会明白问题的根源

顺便说一句,你的编译器会告诉你问题出在哪里,你不需要在哪里得到答案,只要阅读控制台就可以了


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

您有两种方法来解决此问题:

  • 使此函数非静态
  • 使对象列表为静态
  • 因此,如果需要在静态上下文中调用此函数,则应使用第二种方法。 如果您需要此方法来保护此类类型的任何对象的list值,那么您应该使用第一种方法


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

    这些类型的编译错误是您应该在命令行应用程序中解决的问题@Siddique Ansari删除了除主类之外的所有static:-)@andrewhompson:)这就是我删除它的原因。谢谢。发布一个SSCCE,简短,可运行,可编译,以获得真正的帮助(如果你需要的话)如何使对象列表成为静态的?我认为如果你搜索它会更好。您是如何使函数保持静态的?