需要帮助使用单帧应用程序来保存会话

时间:2011-07-18 19:11:24

标签: java swing-app-framework session-storage

我有一个程序需要保存JTextFields,JComboBoxes等中的所有内容。

我找到了一个例子,让我相信我可以通过SingleFrameApplication类实现这一目标。

如果序列化,此程序中有1000多个组件需要跟踪。

这是我到目前为止所拥有的:

public class NewMain extends SingleFrameApplication{

    //the file for the session to be saved to
    String sessionFile = "sessionState.xml";
    //Container is a class I made that extends a JPanel
    Container container;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    Application.launch(NewMain.class, args);
    }

    @Override
    protected void startup() {
        try {
            //load the file
            getContext().getSessionStorage().restore(getMainFrame(), sessionFile);
            container = new Container(getContext());
            show(container);

        }
        catch (Exception e) {

        }
    }

    @Override
    protected void shutdown() {
        try {
            //save to the file so we can open it later
            getContext().getSessionStorage().save(getMainFrame(), sessionFile);
        }
        catch (Exception e) {

        }
    }
}

当我打开运行.jar文件并更改JTextFields,JComboBoxes等中的某些值然后关闭程序并重新打开它时,数据未保存。任何人都可以解释为什么这不起作用或为我需要做的事情提出一些建议吗?谢谢。

1 个答案:

答案 0 :(得分:1)

我建议你在这种情况下使用序列化。 看看这个: http://java.sun.com/developer/technicalArticles/Programming/serialization/ 要么: http://www.java2s.com/Tutorial/Java/0180__File/Savingandrestoringthestateofclasses.htm

并非所有对象都是可序列化的,但正如它在第一个链接中所说的那样,“... Swing GUI组件,字符串和数组 - 是可序列化的”,您可以编写自己的类来实现可序列化的接口。