Заставьте JButton закрыть окно, но перед закрытием запустить код в WindowClosing (WindowsEvent e) - PullRequest
1 голос
/ 20 марта 2012

Я должен сохранить состояние программы в формате xml, когда пользователь нажимает кнопку «Закрыть» или другую кнопку JButton с надписью «Выход».У меня есть, поэтому он работает с помощью WindowListener, когда окно закрывается, он запускает его.Но это работает, только если вы нажимаете красную кнопку закрытия X, но не когда у вас есть другая кнопка.Я мог бы запустить его, прежде чем выполнить System.exit (0) в actionListener для кнопки, но некоторые классы, от которых мне нужна информация, не имеют доступа с этого места.

Это для фрейма.

frame.addWindowListener(new WindowListener(){
    public void windowActivated(WindowEvent arg0){}
    public void windowClosed(WindowEvent arg0){}
    public void windowClosing(WindowEvent arg0)
    {
        myScreen.write.writeToXmlFile(myScreen.pics, myScreen.row, myScreen.col);
    }
    public void windowDeactivated(WindowEvent arg0){}
    public void windowDeiconified(WindowEvent arg0){}
    public void windowIconified(WindowEvent arg0){}
    public void windowOpened(WindowEvent arg0){}
});

Это код кнопки.

public void actionPerformed(ActionEvent arg0) {
        System.exit(0);
}

У меня нет доступа к моему экрану из класса, в котором есть кнопка.

1 Ответ

2 голосов
/ 20 марта 2012
I do not have access to myScreen from the class that has button in it.

JButton # doClick (); может сделать это

но правильный путь тоже может быть (возможно)

  • public void windowClosing(WindowEvent arg0)

первый. пустота или класс

  • create screenshot

2-й недействительный или класс

  • setVisible(false) for Top-Level Container(s)

3-я пустота или класс

  • save applications states

4-я пустота или класс

  • System.exit()

уверен, что вы можете поместить все 4 пустоты (класса) в один, но в случае с m.m код только более понятен и читабелен

...