すでに述べたように、私は初心者であり、プログラムを閉じるためのボタンを作成しようとしています。典型的なウィンドウのクローズ (赤い X) がプログラムを終了することを確認することについて話しているのではありません。クリックするとプログラムも終了する追加のボタンをフレーム内に作成したいと考えています。
質問する
323 次
4 に答える
5
アクションが実行されると JVM から終了するActionListenerをボタンに追加できます。
yourButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
于 2012-08-27T00:27:04.640 に答える
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);
于 2012-08-27T00:27:18.727 に答える
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);
}
}
于 2012-08-27T03:23:19.050 に答える
1
org.jdesktop.application.Application クラスを拡張する場合 (Netbeans はそれを行います)、app クラスで exit() を呼び出すことができます。
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
yourApp.exit();
}
});
于 2012-08-27T00:35:41.547 に答える