0

データベースのデータをテーブルに表示したいのですが、「非静的変数 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);
4

1 に答える 1

0

main メソッドには静的コンテキストがあるため、インスタンス変数に直接アクセスすることはできません。静的メイン メソッドとプライベート変数 jTable1 を持つ Foo という名前のクラスがあるとします。まず、次のシグネチャを持つ jTable1 変数のゲッターを追加する必要があります。

public JTable getTable() {
 return jTable1;
}

次に、メイン メソッドで 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 チュートリアルhttp://docs.oracle.com/javase/tutorial/を参照するか、Google で検索してください。

于 2013-03-09T13:46:50.093 に答える