Java: Кнопка Отмена не закрывает окно для JFrame - PullRequest
1 голос
/ 28 февраля 2012

Я хочу закрыть окно, когда я нажимаю на кнопку Отмена, но оно не работает.

Код:

public class FirstClass{

private JFrame frame;
private JButton btnCancel;

public FirstClass() {

    frame = new JFrame("GRIIS Data Transfer [Mobile to PC]");
    frame.setBounds(200,200,900,450);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    btnCancel = new JButton("Cancel");
    btnCancel.setBounds(800, 5, 85, 25);

    frame.add(btnCancel);

    btnCancel.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            frame.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    super.windowClosing(e);
                    System.exit(0);
                }
            });
        }

    });

}//end of constructor
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            try {
                FirstClass window = new FirstClass();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
}

Пожалуйста, дайте мне знать, если в код необходимо внести изменения.

btnCancel.addActionListener ()

, поэтому мой код будет работать и закроет приложение, когда я нажму на кнопку Отмена.

Ответы [ 2 ]

6 голосов
/ 28 февраля 2012

Не используйте окно списка, оно выдает событие во время закрытия, попробуйте

btnCancel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }});
5 голосов
/ 28 февраля 2012

Нет необходимости переопределять метод WindowListener,

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