7

JFrame1 つのボタンを含む非常に単純なウィンドウがあります: No.

メイン関数で設定setVisible(true);JFrameNoボタンリスナーでウィンドウを閉じたいので、可視性をfalseに設定します。setVisible(false);その後System.exit(0);、プログラムを何度も実行するときにメモリリークが発生するのを防ぐために設定します。

2 つの質問があります。

  1. System.exit(0);上記の場合、本当に必要ですか?
  2. これをウィンドウとして使用すると、プログラム全体が終了するため、実際には使用できませJFrameん。では、ポップアップ ウィンドウを適切に閉じて、メイン ウィンドウにとどまるにはどうすればよいでしょうか。(今はそれを閉じるだけで、プログラムの実行中に何度か閉じると、プログラムは非常に遅くなります)。popupSystem.exit(0);JFramesetVisible(false);
4

3 に答える 3

9
  1. 使用するCardLayout

  2. 別のポップアップコンテナの本当の理由がある場合

  3. 両方を一緒に、2 つのポイントの上に、親 toCardLayoutのポップアップに使用します。1 つのカードから別のカードに切り替えた後に通知することができます / を呼び出す必要がありますJDialogJFrameJDialog.pack()

于 2013-01-03T12:02:31.423 に答える
4
  1. setVisible失速の原因になります
  2. dispose失速の原因になります
  3. System.exitJVM全体を閉じます

したがって、単一のJFrameまたはを再利用する必要がありますJDialog

ボタンのActionListenerで、 を呼び出しframe.setVisible(false);ます。次に、新しいフレームを作成する代わりに、frame.setVisible(true);. フレームの内容を変更したい場合は、関数がありますframe.getContentPane().removeAll();

于 2013-01-03T12:03:32.837 に答える
3

これを追加するだけです: JFrame.setDefaultCloseOperation(DISPOSE_ON_CLOSE). 注: のデフォルト オプションはJFrameですHIDE_ON_CLOSE

于 2013-01-03T12:03:01.763 に答える