Подтвердить что ты не робот

Как сохранить параметры приложения перед выходом?

Я создал приложение и мне нужно сохранить некоторые параметры перед выходом. (что-то вроде размера окна,..., который будет записан в файл.)

В главном кадре установлено следующее:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Как мне сохранить варианты, которые меня интересуют? (до выхода из курса)

Спасибо!

4b9b3361

Ответ 1

Если вы просто хотите что-то сделать, когда приложение закрывается, вы можете заблокировать выключение с помощью этого кода:

    Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

        public void run() {
            // Do what you want when the application is stopping
        }
    }));

Однако это не позволит вам закрыть окно. Если вам нужно что-то проверить перед действительно выходом, вы можете переопределить событие windowClosing:

addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
        // Do what you want when the window is closing.
    }
});

Обратите внимание, что первое решение - с помощью выключения - имеет преимущество в том, что оно не связано с событием окна и будет выполнено, даже если приложение остановлено другим событием (за исключением, конечно, если процесс Java убит жестоко).

Ответ 2

Может быть, следующее поможет.

  • Сначала вам нужно прочитать свой файл свойств. См. документ

    Properties properties = new Properties();
    try {
      properties.load(new FileInputStream("filename.properties"));
    } catch (IOException e) {
      System.err.println("Ooops!");
    }
    
  • Второе добавьте обработчик событий в ваше окно, которое сохранит ваши данные в файле свойств. Все, что вам нужно сохранить, просто поместите в экземпляр свойств и сохраните его при выходе

     addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        try {
         properties.store(new FileOutputStream("filename.properties"), null);
        } catch (IOException e) {
        }
      }
    });
    

Это все, если бы я понял вас правильно)

Ответ 3

Вы можете зарегистрировать WindowListener и сохранить свои параметры в методе windowClose.

И, конечно,

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

Ответ 4

Не уверен, что это относится к вашей ситуации, но это может быть для других, кто занимается этой нитью. В моем приложении есть main(), а в конце есть цикл while (! Shell.isDisposed). Когда приложение запускает этот цикл, и когда приложение закрывается, цикл завершается, и он падает до того, что когда-либо происходит после него в основном методе. Здесь я поставил чек, если редактор загрязнен, и если настройки изменились и обработали эти условия. Мой метод, прикрепленный к файлу close, устанавливает оболочку и вызывает метод closeCurrent(), но если кто-то нажимает значок "закрыть" окна "x", он попадает сюда, и я снова проверяю, что что-то грязное, и сохраните, если мне нужно.

while (!shlCpbtool.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    // exit
    if(dirty){
        closeCurrent();
    }