• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:System.exit(0);について)

System.exit(0);について

このQ&Aのポイント
  • mainフレームから呼び出した子フレームをexit(0)で消すとどちらのフレームも消えてしまいます。
  • mainフレームを消さない方法を探しているのですが見つかりません。
  • ただし、this.etDefaultCloseOperation(JFrame.DISEPOSE_ON_CLOSE);で×を押して消すのではなく、終了ボタンを付けて、actionPerformed内で終了したいです。 また、setVisible(false);のように、メモリが残った状態にもしたくありません。 (メモリが残らないように子フレームを消したいです。)

質問者が選んだベストアンサー

  • ベストアンサー
  • foggi47
  • ベストアンサー率87% (7/8)
回答No.1

普通にJFrame#disposeメソッドではいけませんか? Windowクラスから継承されているものですが、ウィンドウを破棄するというものです。 DISPOSE_ON_CLOSEは終了ボタンが押されたときにdisposeを呼び出しているだけなので、終了ボタンでdisposeしたければ、自分でそのようなコードを書けばいいのです。

hatokamome
質問者

お礼

すみません補足欄にお礼を書いてしまいました。

hatokamome
質問者

補足

disposeで子フレームのメモリを消すことができました。 Javaの内部で何が起こっているのか勉強します。 ありがとうございました。

その他の回答 (1)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

System.exitをするとVM自体を終了してしまうからね。 メモリに残したくない場合は 子ウィンドウの変数を親ウィンドウに依存させないことが重要ね。 変数のスコープはしっかり管理しないといけないわ。 もちろん子ウィンドウのスコープもね。 どうしても心配なら最後に子ウィンドウ=null;としてあげればGC対象になるわ。

hatokamome
質問者

お礼

ありがとうございます。 依存度を下げるための知識を習得する必要があるのですね。 変数のスコープを改善しようと思います。 貴重なヒントありがとうございました。

関連するQ&A