2017-08-19 17 views
1

私は別のオブジェクトのこのコンストラクタによって作成されたJFrameを拡張GUIを持っています。JFrameを閉じると、プログラム内のすべてが終了しますか?

public void actionPerformed(ActionEvent actionEvent) { 
    if(actionEvent.getSource().equals(ui.play)) { 
     if(clickerThread == null) { 
      autoClicker= new AutoClicker(); 
      clickerThread = new Thread(autoClicker); 
      clickerThread.start(); 
     } 
    } 
} 

これは、いつどういう意味:特定のボタンがクリックされたときに

public Engine(int width, int height) { 
    //ui is the GUI object declared as a field of this object 
    ui = new UI(width, height); 
    ui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    ui.setVisible(true); 
} 

GUIのイベントリスナーは、新しいスレッドを作成私はウィンドウのXボタンを押すと、このプログラムに関連するすべてのもの(オートクリッカースレッド、このプログラムに割り当てられたメモリ内のすべて)がクリアされ、将来コンピュータの速度が低下することはありませんか?

または、コンピュータが起動してアプリケーションを閉じた後にこのアプリケーションが開かれていないかのようにするために、何らかの理由でSystem.exit(0)が必要になりますか?

ありがとうございます! JFrame APIパー

答えて

1

public void setDefaultCloseOperation(int operation)
は、ユーザがこのフレームの「クローズ」を開始したときに、デフォルトで実行される処理を設定します。次のいずれかを指定する必要があります。

  • DO_NOTHING_ON_CLOSE(WindowConstantsで定義):何もしないでください。プログラムは、登録されたWindowListenerオブジェクトのwindowClosingメソッドで操作を処理する必要があります。
  • HIDE_ON_CLOSE(WindowConstantsで定義されています):登録されたWindowListenerオブジェクトを呼び出した後、自動的にフレームを非表示にします。
  • DISPOSE_ON_CLOSE(WindowConstantsで定義されています):登録されたWindowListenerオブジェクトを呼び出した後、自動的にフレームを非表示にして処理します。
  • EXIT_ON_CLOSE(JFrameで定義):システム終了方法を使用してアプリケーションを終了します。アプリケーションでのみ使用してください。

はい、システム終了を呼び出すことでアプリケーションを終了します。


ほんの少し側の警告:あなたのスレッドが正しく配線されていない、とあなたはスイングイベントスレッド、EDTを縛ってしまったコードを長時間実行している場合は、JFrameのの終了ボタンはまで応答しませんEDTはブロック解除されます。


サイド勧告2:私はJFrameのを拡張GUIを持って

...私は、そのような以来JFramesとしてトップレベルのウィンドウを拡張するクラスを作成することは推奨

JFrameとしてしか使用できない柔軟性のないクラスが作成されます。 JPanelを作成する(または必要ならば拡張する)ためには、GUIクラスをさまざまなコンテキスト(JFrame、JDialog、別のJPanel、JTabbedPanel)で表示することができます。あなたのコードを少し自由にします。


サイド勧告3:自動クリッカーは、Swingアプリケーション自体と相互作用する場合については、Swingアプリケーションで新しいスレッドを作成し、その後、この構造以来、あなたのバックグラウンドスレッドを作成するためのSwingWorkerのを使用することを検討することを望むかもしれませんスイングスレッディング規則を破ることなく、バックグラウンドスレッドとGUIとの間の安全な通信を助けるメカニズムを持っています。これについては、Googleの「Swingにおける同時実行性」を参照してください。

関連する問題