0

ちょっと、そこ。今日は忙しいデバッガでした。病気はこの短いバージョンを与えます。

iveはデータベースから名前を取得する配列リストを作成しました。次に、arraylistの内容を文字列の配列に入れます。ここで、配列の内容をJListに表示したいと思います。

奇妙なことに、それは以前に機能していました。そして、2つの方法があります。ちょっとした練習でも、Jlistに正しく追加していることを確認してください。ここにキーコードがあります。

これが私のコードのレイアウトです。

変数コンストラクターメソッド

私の変数では、これら3つを定義しています

String[] contactListNames = new String[5];
ArrayList<String> rowNames = new ArrayList<String>();
JList contactList = new JList(contactListNames);

十分に単純です。

私のコンストラクターには、それらが再びあります。

contactListNames = new String[5];
    contactList = new JList(contactListNames);
//i dont have the array list defined though.

 printSqlDetails();
// the prinSqldetails was too make sure that the connectionw as alright. and its working fine.

     fillContactList();
 // this is the one thats causing me grief. its where all the work happens.

   // fillContactListTest();
// this was the tester that makes sure its adding to the list alright.

ここにfillContactListTest()のコードがあります

  public void fillContactListTest()
 {
  for(int i = 0;i<3;i++)
  {
   try
   {
    String contact;
    System.out.println(" please fill the list at index "+ i);
    Scanner in = new Scanner(System.in);
    contact = in.next();
    contactListNames[i] = contact;
    in.nextLine();
   }
   catch(Exception e)
   {
 e.printStackTrace();   
   }
  }
 }

ここに、あまりにも機能すると思われる主なものがあります。

public void fillContactList()
       {
           int i =0;
           createConnection();
           ArrayList<String> rowNames = new ArrayList<String>();
           try
           {
               Statement stmt = conn.createStatement();
               ResultSet namesList = stmt.executeQuery("SELECT name FROM Users");
               try
               {

                   while (namesList.next())
                   {
                       rowNames.add(namesList.getString(1));

                       contactListNames =(String[])rowNames.toArray(new String[rowNames.size()]);

                       // this used to print out contents of array list
                      // System.out.println("" + rowNames);

                       while(i<contactListNames.length)
                       {
                           System.out.println(" " + contactListNames[i]);
                           i++;
                       }
                   }
               }
               catch(SQLException q)
               {
                   q.printStackTrace();
               }
               conn.commit();
               stmt.close();
               conn.close();
           }
           catch(SQLException e)
           {
               e.printStackTrace();
           }
       }

私は本当にここで助けが必要です。私の機知に富んだim。最初のメソッドがJListに問題なく追加される理由がわかりません。しかし、2番目のものはしません。

contactListNames配列と配列リストの両方が正常に出力され、名前が含まれている可能性があります。しかし、私はそれらもjlistを間違って転送しているに違いありません。助けてください

psimはこれが長いことを認識しています。しかし、私にその短いバージョンを信じてください。

4

1 に答える 1

0

あなたは電話する必要があります

contactList = new JList(contactListNames);

fillContactList();

なぜなら、fillContactList()あなたはそれを埋めるのではなく、参照を置き換えているからです。contactListNames

そうは言っても、説明されている問題は関係なく、コードにはもっとオッズがありますが、遅かれ早かれそれらを見つけることができると思います: )(コードはJDBC接続をリークし、コードフローは非効率的で、コードは配置されていません直感的なOOの方法などですが、繰り返しになりますが、これは説明されている問題とは何の関係もありません)。

于 2010-04-23T17:15:38.433 に答える