2015-01-06 2 views
0

여기에 거래가 있습니다. 문자열 값이 포함 된 JtextArea를 사용하여 JList 행을 채우려고하지만 프로그램을 실행할 때 JList의 행은 전달하는 문자열 대신 JTextArea의 속성 (?)입니다. 그래서, 제 코드를 살펴보고 제가 놓친 부분을 지적 해 주시겠습니까? 여기 자바 - JTextArea JList에 원하는 텍스트가 표시되지 않습니다

은 코드입니다 :

public void DoConnect() { 
    try{ 
      String host="jdbc:derby://localhost:1527/Project"; 
      String username="Adminn"; 
      String pass="password"; 
      Connection con = DriverManager.getConnection(host, username, pass); 
      System.out.println("connected"); 

      Statement stmt = con.createStatement(); 
      String SQL = "SELECT * FROM TEAMS"; 
      ResultSet rs=stmt.executeQuery(SQL); 

      while(rs.next()){ 

      String s = rs.getString("NAME"); 

      JTextArea ta = new JTextArea(); 
      ta.setText(s); 
      listModel.addElement(ta); 
      } 
      jList1.setModel(listModel); 
      jButton1.addActionListener ((ActionEvent e) -> { 
       listModel.removeAllElements(); 
       DoConnect(); 
      }); 

     } 
     catch (SQLException err){ 
      System.out.println(err.getMessage()); 
     } 
} 

그리고 여기에 내가 무엇입니까 출력입니다 :

enter image description here

+0

'그러면 JList에 대한 JtextArea가 표시됩니다. '왜 JTextArea에 관심이 있습니까? String 데이터가 중요합니다. – camickr

+0

표시하려는 문자열에 여러 줄이 있기 때문에. 그래서 올바르게 표시 되려면 JTextArea를 사용해야한다는 것을 알았습니다. – SoCo

답변

1

하는 JList의 기본 렌더러는 단순히 객체의 toString() 구현을 표시하는 당신 모델에 추가하십시오.

ListModel에 JTextArea를 추가하지 마십시오. StringListModel

에 추가하십시오. 왜 단 하나의 데이터 열만 원할 때 "팀에서 * 선택"을 사용하고 있습니까? SQL을보다 명확하게 표현하고 쿼리를보다 효율적으로 만듭니다.

편집 :

내가 표시하려고 문자열이 여러 행이 있기 때문에.

그러면 사용자 지정 렌더러를 만들고 렌더러로 JTextArea를 사용해야합니다. 어쨌든 String 텍스트를 ListModel에만 추가 할 수 있습니다. Writing a Custom Renderer에있는 스윙 튜토리얼의 섹션을 읽으십시오.

두 번째 옵션은 텍스트를 HTML로 표시하는 것입니다. JLabel의 여러 라인의 HTML 렌더링됩니다

listModel.addElement("<html>1<br>2<br>3<br></html>"); 
+0

그래서 JTextArea를 포기하는 것이 좋습니다. – SoCo

+0

제안을 시도하십시오. 그것은 단지 코드 라인입니다. 그런 다음 왜 우리가 제공 한 솔루션이 마음에 들지 않는지 알려주십시오. JList의 기본 렌더러는 JLabel이며 레이블에 String을 추가하기 만하면됩니다. 커스텀 렌더러를 만들지 않는 한 JTextArea를 표시 할 수 없으며, 이렇게하기 위해 모든 어려움을 겪고 싶지 않은 이유가 없습니다. – camickr

+0

내가 위에서 말했듯이, 나는 지나가는 문자열에 여러 줄이 있으므로 JTextArea를 사용하면 더 좋지 않을까요? – SoCo

1

내가 틀렸다면 정정 해줘, 당신은 그 목적을 위해 JTable가 아니라 JTextArea에 필요 믿습니다.
예를 들어, check this image

당신이 JTable의 솔루션과 함께 가고 싶은 경우, 당신이 원하는 데이터와 JTable의를 채우기 위해 쉽게 당신의 인생을 만들어 rs2xml.jar라는 라이브러리가있다.

사용법 : 사진에 대한 http://learnerarena.com 님의

Statement stmt = con.createStatement(); 
String SQL = "SELECT * FROM TEAMS"; 
ResultSet rs = stmt.executeQuery(SQL); 
table.setModel(DbUtils.resultSetToTableModel(rs)); //this line requires the rs2xml.jar 

크레딧.
죄송합니다. 낮은 평판 때문에 말할 수 없습니다.

+0

고마워요! 나는 그것을 줄 것이다! – SoCo

+0

@SoCo 좀 더 많은 것을 도와 줄 내 대답이 약간 업데이트되었습니다. – Voqus

관련 문제