2016-08-22 3 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にはオブジェクトがあり、データ型はMeetingです。 これらのオブジェクトを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); 
    } 
} 

私はArrayListの

を格納するファイルを想像して次のステップは、ファイルを作成し、最後には それにArrayListのを書くことでGUIで公衆にもプライベートにDLMを設定する

を試してみました

+0

そして、あなたの質問はありますか? – Raedwald

+0

"* Jlistにはオブジェクトがあります*" - あなたの 'JList'は* raw型*を持っていません。代わりに 'list'を' JList 'と宣言してください。その内容を 'List'として取得するには、単純に' ArrayList mList = Collections.list(g.dlm.elements()); 'を使うことができます.-手動でコピーする必要はありません。 – Holger

答えて

0

あなたは現在のコードでNullPointerExceptionを取得していると思います。 dlmにアクセスするには、GUIのインスタンスが必要です。メソッドsetGUI(GUI g)をDAOに追加し、DAOでwriteFile()を呼び出す前に、このメソッドを使用して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 

} 
関連する問題