2013-05-09 92 views
-2

我想從數據庫中顯示的數據爲JList.But它給人錯誤非靜態變量列表不能從靜態上下文

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(); 
+6

這些類型的編譯錯誤是您應該在命令行應用程序中理清的事情。 – 2013-05-09 08:57:35

+2

@Siddique Ansari刪除所有靜態排除主類:-) – mKorbel 2013-05-09 08:59:03

+2

@AndrewThompson確實:)這就是爲什麼我刪除它。謝謝。 – Maroun 2013-05-09 08:59:09

回答

4

你有2種方法來解決此問題:

  1. 使該功能非靜態
  2. 使對象名單靜態

所以如果你需要調用這個函數在靜態環境下,你應該使用第二種方式。 如果你需要這個來保證這個類類型的任何對象的列表的值,那麼你應該使用第一種方法。

我支持@Andrew Thompson在第一句話中所說的話。

+0

如何使對象列表變爲靜態? – 2013-05-09 09:11:59

+0

如果你搜索一下,我認爲更好。 你是如何使這個功能成爲靜態的? – 2013-05-09 09:15:51

1

假設你有一個藍圖。然後,例如,您會從該藍圖中製作一部手機。之後,你抓住你的剪刀,並切出顯示SD卡的藍圖的一部分,並嘗試將該卡插入手機中。

它不起作用。

這就是爲什麼你不能引用static方法的非static成員。因爲我寫的是真正的vica。

我建議你閱讀一些關於面向對象的設計。對於exmaple this本書是一個很好的java。如果您在注意時仔細閱讀,您將會了解問題的根源。

順便說一句,你的編譯器會告訴你什麼是問題以及哪些地方你並不真正需要這樣才能得到一個答案,只需閱讀控制檯。

正如其他人所說,在java是一種面向對象的語言之前,我們鼓勵您使用它們,所以static成員應該謹慎使用。

相關問題