Массив не отображается в Jlist, но заполнен в консоли - PullRequest
0 голосов
/ 23 апреля 2010

Привет. был занятым отладчиком сегодня. Я дам эту короткую версию.

Я создал список массивов, который берет имена из базы данных. затем я помещаю содержимое массива в массив строк. теперь я тоже хочу отобразить содержимое массивов в JList.

странная вещь, это работало раньше. и у меня есть два метода. некоторые просто немного потренировались, чтобы убедиться, что я правильно добавил в 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();
           }
       }

Мне действительно нужна помощь здесь. я в моем уме. я просто не могу понять, почему первый метод добавил бы к JList без проблем. но второй не будет.

и массив contactListNames, и список массивов могут печатать нормально и иметь имена в них. но я, должно быть, переношу их тоже неправильно. пожалуйста помогите

p. Я знаю, что это долго. но поверьте мне, это короткая версия.

1 Ответ

0 голосов
/ 23 апреля 2010

Вам нужно позвонить

contactList = new JList(contactListNames);

после

fillContactList();

Поскольку внутри fillContactList() вы заменяете ссылку contactListNames вместо заполнения it.

Тем не менее, и не связаны с описанной проблемой , в коде больше шансов, но я думаю, вы рано или поздно их обнаружите код пропускает соединения JDBC, поток кода неэффективен, код не организован интуитивно понятным способом OO и т. д., но, опять же, это не имеет ничего общего с описанной проблемой).

...