2013-10-02 80 views
4

我是Java初學者。我真的需要從陣列或ArrayList返回DefaultTableModeljavax.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

加入以下代碼添加的ArrayList值DefaultListModel應該工作:

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

AND IN JRE 1.6 ?? – Patrick

+0

把'JListValues'放入'New DefaultListModel <>()'的diamond' <>'內,即:'DefaultListModel model = new DefaultListModel ()' – 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());