アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

ご存知の方おられましたら教えてください。よろしくお願いいたします。

A 回答 (2件)

普通にJFrame#disposeメソッドではいけませんか?


Windowクラスから継承されているものですが、ウィンドウを破棄するというものです。

DISPOSE_ON_CLOSEは終了ボタンが押されたときにdisposeを呼び出しているだけなので、終了ボタンでdisposeしたければ、自分でそのようなコードを書けばいいのです。

この回答への補足

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

補足日時:2010/05/06 20:41
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/05/06 20:43

System.exitをするとVM自体を終了してしまうからね。



メモリに残したくない場合は
子ウィンドウの変数を親ウィンドウに依存させないことが重要ね。
変数のスコープはしっかり管理しないといけないわ。
もちろん子ウィンドウのスコープもね。
どうしても心配なら最後に子ウィンドウ=null;としてあげればGC対象になるわ。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/05/06 20:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!