我已经说过我是一个新手,并希望创建一个按钮来关闭程序。我不是在谈论确保典型窗口关闭(红色X)终止程序。我想在我的框架中创建一个额外的按钮,点击它时也会终止该程序。
答案 0 :(得分:5)
您可以在按钮上添加ActionListener,在执行操作时,该按钮将退出JVM。
yourButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
答案 1 :(得分:5)
如果您已将主应用程序框架(JFrame
)defaultCloseOperation
设置为JFrame.EXIT_ON_CLOSE
,则只需调用框架的dispose
方法即可终止该程序。
JButton closeButton = JButton("Close");
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
yourReferenceToTheMainFrame.dispose();
}
});
如果没有,那么您需要在actionPerformed
方法中添加对System.exit(0);
的调用
答案 2 :(得分:2)
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class GoodbyeWorld {
GoodbyeWorld() {
final JFrame f = new JFrame("Close Me!");
// If there are no non-daemon threads running,
// disposing of this frame will end the JRE.
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// If there ARE non-daemon threads running,
// they should be shut down gracefully. :)
JButton b = new JButton("Close!");
JPanel p = new JPanel(new GridLayout());
p.setBorder(new EmptyBorder(10,40,10,40));
p.add(b);
f.setContentPane(p);
f.pack();
f.setLocationByPlatform(true);
f.setVisible(true);
ActionListener closeListener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
f.setVisible(false);
f.dispose();
}
};
b.addActionListener(closeListener);
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
new GoodbyeWorld();
}
};
SwingUtilities.invokeLater(r);
}
}
答案 3 :(得分:1)
如果要扩展org.jdesktop.application.Application类(Netbeans会这样做),您可以在app类中调用exit(),所以:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
yourApp.exit();
}
});