2010-04-23 2 views
0

안녕하세요. 오늘 바쁜 디버거였습니다. 짧은 버전을 제공합니다.배열이 Jlist에 표시되지 않지만 콘솔에 채워짐

ive는 데이터베이스에서 이름을 가져 오는 배열 목록을 만들었습니다. 그런 다음 arraylist의 내용을 문자열 배열에 넣습니다. 이제 배열 내용을 JList에 표시하고 싶습니다.

이상한 일은 일찍 일하고 있습니다. 두 가지 방법이 있습니다. 것들은 Jlist에 올바르게 추가하고 있는지 확인합니다. 그래서 열쇠 코드를 heres.

이것은 내 코드의 레이아웃입니다.

변수 생성자 방법 내 변수

나는이 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. 

을 heres 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(); 
    } 
    } 
} 

는 heres는 메인 하나는 일을 너무 생각 이잖아.

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 메신저 이것이 길다는 것을 알고 있습니다. 하지만 그 짧은 버전을 믿어.

+0

nb 나는 arrayList를 JList에 똑바로 넣을 때 같은 문제가 발생합니다. 아직도 doesnt 한 쇼 – OVERTONE

답변

0

당신은

contactList = new JList(contactListNames); 

fillContactList(); 

fillContactList() 당신이 contactListNames 참조 대신 를 교체하고 내부를 작성하기 때문에 호출해야합니다.

은 기술 문제- 과 관련이없는코드에 더 많은 가능성이 있습니다,하지만 당신은 빨리 그들을 찾을 수 있습니다 이상 내가 :) 가 (코드는 JDBC 연결을 새고 생각, 코드 말했다 흐름은 비효율적이며 코드는 직관적 인 OO 방식으로 배열되지 않습니다. 그러나 다시, 이것은 설명 된 문제와 아무런 관련이 없습니다.

+0

는 무엇이라도 고쳤다. 죄송합니다 – OVERTONE

+0

다음 문제는 멀리 제공된 정보보다 다른 곳에 있습니다.[질문에 현명한 방법으로 질문] (http://catb.org/esr/faqs/smart-questions.html)을 제공하고 [SSCCE] (http://sscce.org)를 제공하십시오 (우리가 할 수 있도록 copy'n'paste ** ** unchanged ** 같은 문제를보기 위해 그것을 컴파일하고 exectute). 태도에 대해서도 노력해주십시오. 언어 장벽인지 확실하지 않지만, 마지막 문장에서 매우 실례합니다. 물론 저는 열심히 도와주고 싶지만, 먼저 우리가 당신을 도울 수 있도록 도와 주어야합니다. – BalusC

+0

사과드립니다. 지금 다시 읽어 보면 나에게 나쁜 인상을 남겼다. 그것은 너무 무례한 것처럼 우연히 만났던 것을 의미하지 않았다. 그러나 관계없이 그것은 나의 일부 위에서 큰 실수이었다. 저는 초보자이지만 매너가 아닌 자바를 사용합니다. 저는 정말로 도움을 청하며 진심으로 사과드립니다. 나는 배우기를 간절히 원하며 무례하게 보이고 싶지 않습니다. p.s SSCCE는 연구하기 어려운 주제이며 지금까지도 알고 싶습니다. 아픈 연구. 감사합니다. – OVERTONE