Как закрыть графический интерфейс, когда я нажимаю JButton - PullRequest
15 голосов
/ 26 декабря 2011

Кто-нибудь знает, как заставить jbutton закрыть графический интерфейс?Я думаю, что это похоже на System.CLOSE(0);, но это не сработало.это также может быть exitActionPerformed(evt);, но это тоже не сработало.будет работать только строка кода.

РЕДАКТИРОВАТЬ: неважно, ребята.ответ был System.exit(0);.хотя спасибо за помощь!

Ответы [ 7 ]

19 голосов
/ 26 декабря 2011

Добавьте вашу кнопку:

JButton close = new JButton("Close");

Добавить ActionListener:

close.addActionListner(new CloseListener());

Добавьте класс для Listener, реализующего интерфейс ActionListener, и переопределите его основную функцию:

private class CloseListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        //DO SOMETHING
        System.exit(0);
    }
}

Возможно, это не самый лучший способ, но его нужно начинать. Например, класс можно сделать общедоступным, а не отдельным классом внутри другого.

7 голосов
/ 26 декабря 2011

См. JFrame.setDefaultCloseOperation(DISPOSE_ON_CLOSE) 1 .Вы также можете использовать EXIT_ON_CLOSE, но лучше явно очистить все запущенные потоки, тогда, когда последний элемент GUI станет невидимым, EDT & JRE завершится.

The 'Кнопка ', чтобы вызвать эту операцию уже на фрейме.

  1. См. этот ответ на Как лучше позиционировать Swing GUI? для демонстрации.функциональности DISPOSE_ON_CLOSE.

    JRE завершится после закрытия всех 3 фреймов нажатием кнопки X .

6 голосов
/ 26 декабря 2011

Используя System.exit (0); Вы бы закрыли весь процесс. Это то, что вы хотели или вы намеревались закрыть только окно графического интерфейса и позволить процессу продолжить работу?

Самый быстрый, простой и надежный способ просто закрыть JFrame или JPanel щелчком JButton - это добавить actionListener к JButton, который будет выполнять следующую строку кода при нажатии JButton:

this.dispose();

Если вы используете дизайнер GUI NetBeans, самый простой способ добавить этот actionListener - это войти в окно редактора GUI и дважды щелкнуть компонент JButton. Это автоматически создаст actionListener и actionEvent, которые вы можете изменить вручную.

3 голосов
/ 03 августа 2015

В Java 8 вы можете использовать лямбда-выражения, чтобы упростить его.

Закрыть приложение

JButton btnClose = new JButton("Close");
btnClose.addActionListener(e -> System.exit(0));

Закрыть окно

JButton btnClose = new JButton("Close");
btnClose.addActionListener(e -> this.dispose());
3 голосов
/ 26 декабря 2011

Вы можете использовать Window # dispose () метод для освобождения всех ресурсов собственного экрана, подкомпонентов и всех принадлежащих ему дочерних элементов.

System.exit(0) завершает работу запущенной виртуальной машины Java.

2 голосов
/ 31 мая 2014

Создайте метод и вызовите его, чтобы закрыть JFrame, например:

public void CloseJframe(){
    super.dispose();
}
0 голосов
/ 17 февраля 2017
JButton close = new JButton("Close");
close.addActionListener(this);
public void actionPerformed(ActionEvent closing) { 
// getSource() checks for the source of clicked Button , compares with the name of button in which here is close .     
if(closing.getSource()==close)
   System.exit(0);
   // This exit Your GUI 
}
/*Some Answers were asking for @override which is overriding the method the super class or the parent class and creating different objects and etc which makes the answer too long . Note : we just need to import java.awt.*; and java.swing.*; and Adding this command : class className implements actionListener{} */
...