2010-04-23 39 views
0

嘿。今天是一個繁忙的調試器。 生病給你短版。陣列沒有顯示在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錯誤。請幫忙

我知道這很長。但請相信我的簡短版本。

+0

nb我得到同樣的問題,當我把數組列表直接到JList。仍然不顯示 – OVERTONE 2010-04-23 17:18:40

回答

0

你需要調用

contactList = new JList(contactListNames); 

fillContactList(); 

因爲裏面的fillContactList()更換contactListNames參考,而不是填充它。

也就是說無關所描述的問題,也有代碼更賠率,但你遲早會發現他們出來以後我覺得:) (代碼泄漏JDBC連接,代碼流程效率低下,代碼沒有以直觀的OO方式排列等等,但是,這與所描述的問題完全沒有關係)。

+0

沒有改變任何東西。對不起 – OVERTONE 2010-04-23 17:28:48

+0

那麼問題在於別的地方而不是提供的信息。嘗試[以聰明的方式問你的問題](http://catb.org/esr/faqs/smart-questions.html)並提供[SSCCE](http://sscce.org)(這樣我們可以copy'n'paste代碼**不變**,編譯並執行它以查看相同的問題)。請同時處理你的態度,我不確定這是否是語言障礙,但是你的最後一句話聽起來很不禮貌。當然,我很樂意幫忙,但你首先要幫助我們來幫助你。 – BalusC 2010-04-26 12:58:41

+0

我很抱歉。現在回想起來,對我來說這是一個相當糟糕的評論。這並不意味着太粗魯,但不管這是我的錯誤。 我是一個初學者與Java但不禮貌。 我真的很樂意幫助,並希望你接受我真誠的道歉。我渴望學習,絕不希望看起來不尊重。 p.s SSCCE是一個很難研究的話題,我甚至想知道它直到現在。不適當的研究ti一些。謝謝。 – OVERTONE 2010-04-26 14:43:07