数组未显示在Jlist中但填充在控制台中

时间:2010-04-23 17:11:28

标签: java jdbc arrays jlist

嘿那里。今天是一个忙碌的调试器。 生病了短版。

我做了一个数组列表,从数据库中获取名称。 然后我把arraylist的内容放入一个字符串数组中。 现在我也希望在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数组和数组列表都可以正常打印并在其中包含名称。但我必须将他们转移到jlist错误。请帮忙

p.s我知道这很长。但请相信我的简短版本。

1 个答案:

答案 0 :(得分:0)

您需要致电

contactList = new JList(contactListNames);

后的

fillContactList();

因为在fillContactList()内你替换了 contactListNames引用,而不是填充

无关所描述的问题,代码中有更多的赔率,但你迟早会发现它们我认为:) (代码泄漏了JDBC连接,代码流效率低下,代码没有以直观的OO方式排列等等。但是,这又与所描述的问题无关)。 < / p>