我是使用Swing开发Java Form Application的新手。退出应用程序的退出按钮的合适代码是什么?
例如:
在C#(.NET Framework)中,我们使用Application.Exit();
作为退出什么按钮的代码。 Java中退出应用程序的等效代码是什么?
答案 0 :(得分:9)
jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
现在进行一些解释。与问题中最接近的等价物是......
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
但这会杀死整个JRE,而不管正在运行的其他非守护程序线程。如果它们正在运行,则应该关闭它们或明确清理它们。
如果没有其他非守护程序线程在运行,DISPOSE_ON_CLOSE
将部署当前JFrame
并结束虚拟机。
答案 1 :(得分:2)
@AndrewThompson是关于JFrame.EXIT_ON_CLOSE
的,但你可以采取措施避免杀人。
JFrame.EXIT_ON_CLOSE
很好,如果您在JFrame.processWindowEvent(WindowEvent)
次覆盖WindowEvent.WINDOW_CLOSING
事件时进行清理。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.Timer;
public class ExitJFrame extends JFrame {
public ExitJFrame() {
setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("Exit");
add(button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ExitJFrame.this.processWindowEvent(
new WindowEvent(
ExitJFrame.this, WindowEvent.WINDOW_CLOSING));
}
});
setSize(200, 200);
setLocationRelativeTo(null);
}
@Override
protected void processWindowEvent(WindowEvent e) {
// more powerful as a WindowListener, since you can consume the event
// if you so please - asking the user if she really wants to exit for
// example, do not delegate to super if consuming.
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
doCleanup();
super.processWindowEvent(e);
} else {
super.processWindowEvent(e);
}
}
private void doCleanup() {
final JDialog dialog = new JDialog(this, true);
dialog.setLayout(new BorderLayout());
dialog.setUndecorated(true);
JProgressBar progress = new JProgressBar();
dialog.add(progress);
dialog.add(new JLabel("Waiting for non-daemon threads to exit gracefully..."), BorderLayout.NORTH);
progress.setIndeterminate(true);
Timer timer = new Timer(2000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);
dialog.dispose();
}
});
timer.setRepeats(false);
timer.start();
dialog.pack();
dialog.setLocationRelativeTo(this);
dialog.setVisible(true);
}
public static void main (String[] args) {
new ExitJFrame().setVisible(true);
}
}
答案 2 :(得分:1)
如果您想创建一个按钮,当用户点击该按钮时退出该应用程序,请尝试以下操作:
JButton exit = new JButton("exit");
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
};
exit.addActionListener(al);
现在,当您按下该按钮时,应用程序将退出。
答案 3 :(得分:0)
如果你正在谈论要放入表单中的JButton
,那么你想在构造函数中为表单调用JFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)
,然后你的按钮处理程序可以调用
dispose()
关闭表单。
答案 4 :(得分:0)
非常简单的回答是@Andrew Thompson所说的。
jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
或强>
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
如果你想通过代码以其他方式制作它。然后你可以把这个代码放在任何地方在活动中。
System.exit(0);
希望这会有所帮助。