Нужна помощь с использованием SingleFrameApplication для сохранения сеансов - PullRequest
2 голосов
/ 18 июля 2011

У меня есть программа, которая должна сохранять все вещи в 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 Ответ

1 голос
/ 18 июля 2011

Я бы предложил вам использовать сериализацию для этой ситуации.проверьте это: http://java.sun.com/developer/technicalArticles/Programming/serialization/ или: http://www.java2s.com/Tutorial/Java/0180__File/Savingandrestoringthestateofclasses.htm

Не все объекты являются сериализуемыми, но, как сказано в первой ссылке, "... компоненты Swing GUI, строки и массивы - это"serializable", и вы можете написать собственный класс, реализующий интерфейс сериализации.

...