Java 如何保存和打开ArrayList?
我正试图保存Java 如何保存和打开ArrayList?,java,swing,arraylist,switch-statement,graphics2d,Java,Swing,Arraylist,Switch Statement,Graphics2d,我正试图保存GraphicObjects的ArrayList,以便以后重新加载。问题是,我无法加载ArrayList,我总是得到一个空的ArrayList,而不是原始的ArrayList。 有像[Line@2f06692f]在原始阵列列表中 以下是我的代码的重要部分: PaintPanel p = new PaintPanel(); ...a lot of code... @Override public void actionPerformed(ActionEvent e) { Arr
GraphicObjects
的ArrayList
,以便以后重新加载。问题是,我无法加载ArrayList
,我总是得到一个空的ArrayList
,而不是原始的ArrayList
。
有像[Line@2f06692f]
在原始阵列列表中
以下是我的代码的重要部分:
PaintPanel p = new PaintPanel();
...a lot of code...
@Override
public void actionPerformed(ActionEvent e) {
ArrayList<GraphObject> savedList= new ArrayList<>();
switch (e.getActionCommand()) {
case "Save":
savedList = p.getGraphicList();
break;
不知怎的,这不起作用,savedList
此时总是空的
这是我的PaintPanel
类,其中graphicslist
是我想要保存的
public class PaintPanel extends JPanel {
public ArrayList<GraphObject> graphicList = new ArrayList<>();
...
很难说,但在我看来,您的
savedList
在actionPerformed
方法的本地作用域中,因此当该方法结束并且没有实际保存时,它超出了作用域
也许可以尝试将savedList
设置为一个字段?很难用您提供的代码量给出最佳推荐
很难说,但在我看来,您的
savedList
在actionPerformed
方法的本地范围内,因此当该方法结束时,它超出了范围,并且没有实际保存
也许可以尝试将savedList
设置为一个字段?很难用您提供的代码量给出最佳推荐
带有
savedList = p.getGraphicList();
您只需将引用复制到完全相同的列表。PaintPanel稍后所做的所有更改也将影响savedList
变量。请试着把它改成
savedList = new ArrayList<>(p.getGraphicList());
savedList=newarraylist(p.getgraphicslist());
带有
您只需将引用复制到完全相同的列表。PaintPanel稍后所做的所有更改也将影响savedList
变量。请试着把它改成
savedList = new ArrayList<>(p.getGraphicList());
savedList=newarraylist(p.getgraphicslist());
为了清楚起见,我们谈论的是com.facebook.model.GraphObject
对象还是您自己的自定义对象?我有自己的界面GraphObject“保存”和“加载”案例是否属于同一个开关
?如果是,那么当然在“加载”情况下,savedList
将被初始化,但为清晰起见,我们谈论的是com.facebook.model.GraphObject
对象还是您自己的自定义对象?我有自己的界面GraphObject“保存”和“加载”情况是否属于同一个开关?如果是,那么当然在“加载”情况下,savedList
将被初始化,但清空存储库,durron597解决了我的问题,但这解决了我以后可能遇到的问题。谢谢我用:savedList=newarraylist(p.getgraphicslist())
是的,我现在明白了,两个不同的问题hanks,durron597解决了我的问题,但这解决了我以后会遇到的问题。谢谢我用:savedList=newarraylist(p.getgraphicslist())
是的,我现在明白了,两个独立的问题解决了我的问题savedList
现在是一个全局定义的字段,而不是actionPerformed
方法中的本地字段。谢谢,这解决了我的问题savedList
现在是一个全局定义的字段,而不是actionPerformed
方法中的本地字段。
savedList = new ArrayList<>(p.getGraphicList());