Java обнаруживает, когда приложение закрывается - PullRequest
0 голосов
/ 23 октября 2018

Я выучил Java около года назад.Теперь я хотел вернуться к этому, но мои навыки стали немного ржавыми.Поэтому я использую Eclipse с WindowBuilder, чтобы сделать приложение Form простым, чтобы начать работу снова.Я хотел получить всплывающее окно при выходе из приложения, потому что в будущих проектах мне нужно выполнить некоторый код, когда приложение выходит из программы другим способом, чем моя собственная кнопка выхода (например, через красный крест или Alt + F4).

Итак, это мой код:

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


public class Mainframe {

private JFrame frame;

/**
 * Launch the application.
 */
public static void main(String[] args) {


    Runtime.getRuntime().addShutdownHook(new Thread()
    {
        @Override
        public void run()
        {
            JOptionPane.showConfirmDialog(null, "Do you", "Message", 
                    JOptionPane.YES_NO_OPTION);
            MessageBox.infoBox("YOUR INFORMATION HERE", "TITLE BAR MESSAGE");
        }
    });

    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Mainframe window = new Mainframe();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

}

/**
 * Create the application.
 */
public Mainframe() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JButton btnNewButton = new JButton("New button");
    btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            System.exit(0);


        }
    });
    frame.getContentPane().add(btnNewButton, BorderLayout.SOUTH);
}



}

Я использовал код "когда приложение закрывается" из этого примера, но неважнокак я его закрываю, нет "Messagebox появляется".Когда я использую код для MessageBoxes непосредственно после основной пустоты, появляются MessageBoxes, поэтому я полагаю, что поставил ShutdownHook неправильно.

Буду очень признателен, если кто-нибудь сможет помочь мне решить эту проблему.

1 Ответ

0 голосов
/ 23 октября 2018

Хук завершения работы предназначен для выполнения определенных действий (таких как закрытие соединений с базой данных и отключение потоков) после закрытия приложения (будь то с помощью вызова System.exit или сигнала уничтожения из ОС).Он не предназначен для таких диалогов.

Вы захотите добавить WindowListener к вашему JFrame и выполнить действие для событий windowClosing и / или windowClosed.,В этом слушателе вы можете отобразить диалоговое окно или все, что пожелаете.

Если вы хотите отменить закрытие окна, вы можете найти подробную информацию о том, как это сделать, на этот вопрос..

...