几年前,我学习Java大约一年了。现在我想回到它,但是我的技能有些生锈。因此,我将Eclipse与WindowBuilder结合使用,以使表单应用程序易于重新启动。我想在退出应用程序时得到一个弹出窗口,因为在以后的项目中,当我通过自己的退出按钮以外的其他方式(例如,通过红叉或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);
}
}
我使用了this中“退出应用程序时”的代码 例如,但是无论我如何关闭它,都不会出现“消息框”。当我直接在主要空白之后使用MessageBoxes的代码时,出现MessageBoxes,所以我想我将ShutdownHook放错了位置。
如果有人可以帮助我解决此问题,我将不胜感激。
答案 0 :(得分:0)
shutdown挂钩旨在在应用程序关闭后(通过System.exit
调用或来自操作系统的kill信号)执行某些操作(例如,关闭数据库连接和关闭线程)。不能用于此类对话框。
您将需要向WindowListener
中添加JFrame
,并对windowClosing
和/或windowClosed
事件执行操作。然后,在此侦听器中,您可以显示一个对话框或您想要的任何内容。
如果希望能够覆盖关闭窗口,请在this question上找到有关操作方法的详细信息。