web-dev-qa-db-ja.com

JButtonをプッシュしたときにGUIを閉じる方法

JbuttonでGUIを閉じる方法を知っている人はいますか? System.CLOSE(0);に似ていると思いますが、うまくいきませんでした。 exitActionPerformed(evt);の場合もありますが、それも機能しませんでした。コードの行だけが機能します。

編集:みんな気にしないでください。答えはSystem.exit(0);でした。助けてくれてありがとう!

15
PulsePanda

ボタンを追加します。

JButton close = new JButton("Close");

ActionListenerを追加します。

close.addActionListner(new CloseListener());

ActionListenerインターフェースを実装するリスナーのクラスを追加し、そのメイン機能をオーバーライドします。

private class CloseListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        //DO SOMETHING
        System.exit(0);
    }
}

これは最善の方法ではないかもしれませんが、開始点です。たとえば、クラスは、別のクラス内のプライベートクラスとしてではなく、パブリックにすることができます。

19
Baarn

JFrame.setDefaultCloseOperation(DISPOSE_ON_CLOSE) を参照してください1EXIT_ON_CLOSE 。ただし、実行中のスレッドを明示的にクリーンアップすることをお勧めします。最後のGUI要素が見えなくなると、EDTとJREは終了します。

この操作を呼び出す「ボタン」はすでにフレーム上にあります。

  1. この回答 から Swing GUIの最適な配置方法 を参照してください。 DISPOSE_ON_CLOSE機能。

    JREは、すべての3フレームが閉じられた後に終了します X ボタン。

7
Andrew Thompson

System.exit(0);を使用してプロセス全体を閉じます。それはあなたが望んでいたことですか、GUIウィンドウのみを閉じてプロセスの実行を許可するつもりでしたか?

JButtonのクリックでJFrameまたはJPanelを単純に閉じるための最も速く、最も簡単で堅牢な方法は、JButtonがクリックされたときに以下のコード行を実行するactionListenerをJButtonに追加することです。

this.dispose();

NetBeans GUIデザイナーを使用している場合、このactionListenerを追加する最も簡単な方法は、GUIエディターウィンドウに入り、JButtonコンポーネントをダブルクリックすることです。これを行うと、actionListenerとactionEventが自動的に作成され、ユーザーが手動で変更できます。

6
Dillon Chaffey

Java 8では、Lambda式を使用してより簡単にできます。

アプリケーションを閉じる

JButton btnClose = new JButton("Close");
btnClose.addActionListener(e -> System.exit(0));

ウィンドウを閉じる

JButton btnClose = new JButton("Close");
btnClose.addActionListener(e -> this.dispose());
3
ciri-cuervo

Window#dispose() メソッドを使用して、すべてのネイティブ画面リソース、サブコンポーネント、および所有されているすべての子を解放できます。

System.exit(0)は、現在実行中のJava仮想マシンを終了します。

3
adatapost

メソッドを作成して呼び出し、JFrameを閉じます。次に例を示します。

public void CloseJframe(){
    super.dispose();
}
2
Amazigh
JButton close = new JButton("Close");
close.addActionListener(this);
public void actionPerformed(ActionEvent closing) { 
// getSource() checks for the source of clicked Button , compares with the name of button in which here is close .     
if(closing.getSource()==close)
   System.exit(0);
   // This exit Your GUI 
}
/*Some Answers were asking for @override which is overriding the method the super class or the parent class and creating different objects and etc which makes the answer too long . Note : we just need to import Java.awt.*; and Java.swing.*; and Adding this command : class className implements actionListener{} */
0