кнопка выхода java - PullRequest
       4

кнопка выхода java

1 голос
/ 17 января 2020

Я создаю Java GUI на IntelliJ и создаю кнопку «выход» - в настоящее время используется

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;


public class gui extends JFrame {
    private JPanel mainPanel;

    private JButton exitButton;

    public gui(String title) {
        super(title);

        exitButton = new JButton("Exit");
        exitButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setContentPane(mainPanel);
        this.pack();
    }
    public static void main(String[] args) {
        JFrame frame = new gui("Emro GUI");
        frame.setVisible(true);
    }
}

Код работает, и я следовал точному учебнику на YouTube, но выход Кнопка не работает, как это должно, и я не уверен, почему. Должен ли я иметь кнопку выхода в новом классе или функции?

1 Ответ

0 голосов
/ 18 января 2020

Добавление следующих трех строк в соответствующих местах приведет к его работе.

import javax.swing.*;
        mainPanel = new JPanel();
        mainPanel.add(exitButton);

Однако:

  • Всегда следует использовать колебание из потока обработки событий AWT (EDT) (используйте java.awt.EventQueue.invokeLater.
  • Не нужно расширять JFrame.
  • Не нужно, чтобы mainPanel и exitButton были полями вместо локальных.
  • Использование лямбда-выражение для ActionListener.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...