- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:System.exit(0);について)
System.exit(0);について
このQ&Aのポイント
- mainフレームから呼び出した子フレームをexit(0)で消すとどちらのフレームも消えてしまいます。
- mainフレームを消さない方法を探しているのですが見つかりません。
- ただし、this.etDefaultCloseOperation(JFrame.DISEPOSE_ON_CLOSE);で×を押して消すのではなく、終了ボタンを付けて、actionPerformed内で終了したいです。 また、setVisible(false);のように、メモリが残った状態にもしたくありません。 (メモリが残らないように子フレームを消したいです。)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
普通にJFrame#disposeメソッドではいけませんか? Windowクラスから継承されているものですが、ウィンドウを破棄するというものです。 DISPOSE_ON_CLOSEは終了ボタンが押されたときにdisposeを呼び出しているだけなので、終了ボタンでdisposeしたければ、自分でそのようなコードを書けばいいのです。
その他の回答 (1)
- askaaska
- ベストアンサー率35% (1455/4149)
回答No.2
System.exitをするとVM自体を終了してしまうからね。 メモリに残したくない場合は 子ウィンドウの変数を親ウィンドウに依存させないことが重要ね。 変数のスコープはしっかり管理しないといけないわ。 もちろん子ウィンドウのスコープもね。 どうしても心配なら最後に子ウィンドウ=null;としてあげればGC対象になるわ。
質問者
お礼
ありがとうございます。 依存度を下げるための知識を習得する必要があるのですね。 変数のスコープを改善しようと思います。 貴重なヒントありがとうございました。
お礼
すみません補足欄にお礼を書いてしまいました。
補足
disposeで子フレームのメモリを消すことができました。 Javaの内部で何が起こっているのか勉強します。 ありがとうございました。