【问题标题】:Get Objects to Arraylist, DAO获取对象到 Arraylist、DAO
【发布时间】:2016-08-22 21:03:47
【问题描述】:

我想将 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 有对象,数据类型是会议。 我怎样才能将这些对象放入 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 的文件

【问题讨论】:

  • 你的问题是?
  • “现在 Jlist 有对象”——你的 JList 没有原始类型。只需将 list 声明为 JList&lt;Meeting&gt; 即可。要获取List的内容,只需使用ArrayList&lt;Meeting&gt; mList = Collections.list(g.dlm.elements());即可,无需手动复制。

标签: java object arraylist


【解决方案1】:

我认为您将在当前代码中获得 NullPointerException。您需要 GUI 实例才能访问 dlm。在DAO中添加方法setGUI(GUI g),并在DAO中调用writeFile()之前使用该方法设置GUI实例。 dlm 应该是公开的,以便他工作。

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

我不会说这是最好的设计,但它应该可以工作。

为了获得更好的设计,将模型值转换为 GUI 本身中的 ArrayList,并以 ArrayList 作为参数调用writeFile() 方法。

道

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

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

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2015-04-18
    • 2021-06-22
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多