0

私は、Javaについてもう少し学び、常にNetBeansを使用せずに手動でレイアウトを設計するために、小さなプログラムを書き始めました。

プロジェクトを実行して閉じると、NetBeansでの実行が停止しないため、再実行するたびに別の実行が作成されます。NetBeansを使用して作成した別のGUIを検索して確認することにより、

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

トリックをするだろうが、私は間違っていると思います。

誰かが私に何をすべきか説明してもらえますか?

これが私のプログラムのSSCCEです:http://pastebin.com/QhKpwdDw

事前にどうもありがとうございました!

4

4 に答える 4

1
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/WindowConstants.html#DISPOSE_ON_CLOSE

DISPOSE_ON_CLOSE

public static final int DISPOSE_ON_CLOSE dispose-window のデフォルトのウィンドウを閉じる操作。注: Java 仮想マシン (VM) 内の最後の表示可能ウィンドウが破棄されると、VM が終了する場合があります。詳細については、AWT スレッドの問題を参照してください。

関連項目: Window.dispose()、JInternalFrame.dispose()、定数フィールド値

于 2012-07-06T17:56:25.307 に答える
1

この質問をご覧になることをお勧めします: How to close a Java Swing application from the codeは、アプリケーションの一般的なクローズと、アプリケーションを完全に終了させる方法を扱っているためです。

しかし、質問にすばやく答えるには、いくつかのオプションがあります。


オプション1

クラスで拡張JFrameしているので、終了するために使用できますEXIT_ON_CLOSE

setDefaultCloseOperation(EXIT_ON_CLOSE);

注: EXIT_ON_CLOSE適用されているアプリケーションだけでなく、アプリケーション内のすべてを終了JFramesします。


オプション 2

これはおそらくあなたが望む答えではありませんが、あなたがそれを適用しようとしているものDISPOSE_ON_CLOSEだけを閉じます.JFrame

複数JFrames開いている場合、または他の がある場合Threads、それらは実行され続け、プログラムは終了しません。Threadただし、と が 1 つしかない場合はJFrame、アプリケーションが終了します。

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);


私の好み

私は選択肢 1 を採用しますが、他の意見には同意しません。に直接関連付けられてJFrameおり、依存していないためWindowConstants、物事がよりクリーンで信頼性が高くなります。しかし、もっと重要なことは、それを適用したウィンドウだけでなく、すべてのウィンドウを閉じることです。

ウィンドウが 1 つしかないように見えてもThreads、プログラム内の別の場所に、NetBeans がスローしている他の内部がある場合があります。

すべてが確実に閉じるようにするには、 を使用しますEXIT_ON_CLOSE


追加情報

DISPOSE_ON_CLOSEどのように、どのようにEXIT_ON_CLOSE異なるかについての議論: http://www.coderanch.com/t/340183/GUI/java/DISPOSE-CLOSE-vs-EXIT-CLOSE

ドキュメントJFrame's EXIT_ON_CLOSE: http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/JFrame.html#EXIT_ON_CLOSE

DISPOSE_ON_CLOSEその他のドキュメントWindowConstants: http://docs.oracle.com/javase/1.5.0/docs/api/javax/swing/WindowConstants.html#DISPOSE_ON_CLOSE

于 2012-07-06T18:15:12.537 に答える
1

これを試して...

JFrameまたはJFrame を拡張するクラスのコンストラクター内に配置します。

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

于 2012-07-06T18:01:51.617 に答える
0

ここでわかるように ( setDefaultCloseOperation doc )、ウィンドウ リスナーをトリガーする場合 (たとえば、データベース接続を閉じる場合) は DISPOSE_ON_CLOSE を使用できます。このような場合、EXIT_ON_CLOSE の代わりに DISPOSE_ON_CLOSE を選択するのが理にかなっています。

System.exit(0)PS :アプリケーションが終了するように、ウィンドウ リスナー コードの最後にa を追加することを忘れないでください。

于 2013-01-29T13:26:12.487 に答える