我想将Jlist中的对象(带有DefaultListModel)写入Arraylist,以便我可以使用它来保存/加载(流)它们。
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);
}
}
我试图在GUI上将dlm设置为私有也公开
下一步是创建一个文件并在其中编写Arraylist 最后,我想象一个存储Arraylist的文件
答案 0 :(得分:0)
我认为您将使用当前代码获取NullPointerException。您需要GUI实例才能访问dlm。向DAO添加方法setGUI(GUI g)
,并在调用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
}