Вопрос

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

Основной фрейм установил это:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

Спасибо!

Это было полезно?

Решение

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

    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 жестоко завершается). ).

Другие советы

Возможно, поможет следующее.

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

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

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

Вот и всё, если я вас правильно понял)

Вы можете зарегистрировать ОкноПрослушиватель и сохраните свои параметры в методе windowClose.

И конечно

frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

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

while (!shlCpbtool.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    // exit
    if(dirty){
        closeCurrent();
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top