-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

これを解決するには 2 つの方法があります。

  1. この関数を非静的にする
  2. オブジェクト リストを静的にする

したがって、静的コンテキストでこの関数を呼び出す必要がある場合は、2 番目の方法を使用する必要があります。このクラス タイプのオブジェクトの list の値を保護するためにこれが必要な場合は、最初の方法を使用する必要があります。

そして、@Andrew Thompsonが最初の文で言ったことを支持します。

于 2013-05-09T09:06:54.763 に答える
1

設計図があると想像してください。そして、例えば、その設計図から携帯電話を製造します。後で、はさみをつかみ、SD カードが表示されている設計図の一部を切り取り、そのカードを携帯電話に挿入しようとします。

うまくいきません。

staticそのため、メソッドから非メンバーを参照することはできませんstatic。私が書いたことは真逆だからです。

オブジェクト指向設計について読むことをお勧めします。たとえば、この本は Java に関する優れた本です。注意しながら読み通せば、問題の根本が理解できます。

ところで、あなたのコンパイラは何が問題なのか、答えを得るために SO を必要としない場所を教えてくれるので、コンソールを読んでください。

Java がオブジェクト指向言語である前に他の人が言ったように、Java を使用することをお勧めします。そのため、staticメンバーは慎重に使用する必要があります。

于 2013-05-09T09:03:39.613 に答える