2013-10-02 2 views
4

저는 Java로 초보자입니다. 배열 또는 ArrayList에서 DefaultTableModel (javax.swing)을 반환해야합니다. 것이 가능하다? DefaultTableModel (생성자)에 배열을 삽입 할 수 없습니다.ArrayList를 DefaultListModel로 변환하십시오.

코드는 다음과 같습니다 :

private DefaultListModel model; 


public DefaultListModel getNamesAndIdToCombobox(Connection conn, boolean closeConn, String sql) throws SQLException { 

    long counter = 0; 

    try { 
     Statement stmt = 
       conn.prepareStatement(sql); 
     ResultSet rs = stmt.executeQuery(sql); 

     while (rs.next()) { 
      // String longKey = (String)rs.getString(2); 
      try 
      { 
       jListList.add(new JListValues(rs.getLong(2), rs.getString(1))); 
      } 
      catch(SQLException sqlException){} 

      try 
      { 
       jListList.add(new JListValues(rs.getLong(2), rs.getLong(1))); 
      } 
      catch(SQLException sqlException){} 

      try 
      { 
       jListList.add(new JListValues(rs.getString(2), rs.getLong(1))); 
      } 
      catch(SQLException sqlException){} 
      counter++; 

     } 
     JListValues[] array = jListList.toArray(new JListValues[jListList.size()]); 


     model = new DefaultListModel(array);  // HERE IT IS A PROBLEM 

     LOGGER.info("getNamesAndIdToCombobox result count: " + counter); 
    } catch (SQLException e) { 
     LOGGER.error("Error", e); 
     throw e; 
    } finally { 
     try { 
      if (closeConn == true) 
       conn.close(); 
     } catch (Exception e) {/* null */ 
     } 
    } 
    return model; 
} 
+0

정확히 무엇이 문제입니까? – Dimitri

+1

그래서 루프를 만들고 값을 하나씩 Vector에 복사 한 다음 Vector를 사용하여 DefaultListModel을 만듭니다. 또는 값을 Vector에로드하여 복사 할 필요가 없습니다. 또한 질문을 명확히하십시오. 때로는 TableModel을 참조하고 다른 경우에는 ListModel을 참조합니다. – camickr

답변

3

작동합니다 DefaultListModel에 ArrayList에 값을 추가하는 다음 코드를 추가 : 다음과

DefaultListModel<JListValues> model = new DefaultListModel<>() 
for(JListValues val : array) 
     model.addElement(val); 
+0

및 JRE 1.6 ?? – Patrick

+0

'DefaultListModel model = new DefaultListModel ()''DefaultListModel <>()'의 다이아몬드'<>'안에'JListValues'를 넣으십시오. – Sage

3

, 데이터 세트를 반복 할 필요가없고, 훨씬 더 효율적입니다.

JList<String> jlist = new JList<String>(new String[]{"a","b","c","d"}); 

DefaultListModel<String> defaultListModel = (DefaultListModel<String>)jlist.getModel(); 

ArrayList<String> arrayList = Collections.list(defaultListModel.elements());