2016-08-22 78 views
-2

我想從Jlist(使用DefaultListModel)將對象寫入Arraylist,以便我可以使用它來保存/加載(流)它們。獲取對象到Arraylist,DAO

GUI 
private DefaultListModel<Meeting> dlm = new DefaultListModel<Meeting>(); 
private JList list = new JList<>(dlm); 

    btnNewButton_1.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      Meeting m; 
      m = new Meeting((Date)spinner.getValue(), textArea.getText()); 
      dlm.addElement(m); 
     } 
    }); 

現在Jlist有對象,數據類型是會議。 如何將這些對象加入到Arraylist中,它應該用於DAO?

DAO 

private GUI g; 

private void writeFile() { 

    ArrayList<Meeting> mList = new ArrayList<>(); 
    for (Object meeting : Arrays.asList(g.dlm.toArray())) 
    { 
     mList.add((Meeting)meeting); 

     System.out.println(meeting); 
    } 
} 

我試圖DLM在GUI

下一個步驟是創建一個文件,寫的ArrayList進去 最後我想象存儲ArrayList中

文件設置爲私人也公開
+0

而你的問題是什麼? – Raedwald

+0

「*現在Jlist有對象*」 - 沒有你的'JList'有一個* raw類型*。只需將'list'聲明爲'JList '而不是。要獲得它的內容作爲'List',你可以簡單地使用'ArrayList mList = Collections.list(g.dlm.elements());' - 不需要手動複製。 – Holger

回答

0

我想你會得到一個NullPointerException與當前的代碼。您需要GUI的實例才能訪問dlm。在DAO中調用writeFile()之前,將方法setGUI(GUI g)添加到DAO並使用此方法設置GUI的實例。 dlm應該公開他的工作。

public void setGUI(GUI g) { 
    this.g = g; 
} 

我不會說這是最好的設計,但它應該工作。

要獲得更好的設計,請將模型值轉換爲GUI本身中的ArrayList,並使用ArrayList作爲參數調用writeFile()方法。

DAO

// Don't need this 
//private GUI g; 

private void writeFile(ArrayList<Meeting> mList) { 
    // Code to save to a file 

}