0

こんにちは、実行時にcmdを開いてからフレームを開くコードがあります。フレームが開いたらすぐにコマンドを閉じるか、ユーザーがフレームを閉じると同時にコマンドを閉じる必要があります。これは、フレームを閉じるときのコードです。

frame = new JFrame("BrainSla");
frame.setLayout(new BorderLayout());
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

メインコードは次のとおりです。

public static void main(String args[]) {
    try {
        System.out.println("BrainSla - By Jannes Braet, Steven Brain, Wout Slabbinck.");
        nodeID = 10;
        portOff = 0;
        setHighMem();
        isMembers = true;
        signlink.storeid = 32;
        signlink.startpriv(InetAddress.getLocalHost());
        new Jframe(args);
        //instance = new client();
        //instance.createClientFrame(503, 765);
    } catch(Exception e) {
        e.printStackTrace();
    }
}

誰かが私にそのようなことをする方法を教えてもらえますか?

4

4 に答える 4

0

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);に 変更

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

これにより、フレームを閉じるとすぐにアプリケーションが終了します

于 2012-05-30T14:56:03.680 に答える
0

「cmd」の場合は、「コマンド ライン」または CLI を参照しています。オプション:

  1. javaw代わりに使用して、batファイル(またはOSごとに同様)から起動しますjava
    • 低学習曲線。
    • 見た目はあまりプロフェッショナルではありません。
  2. 実行可能な Jar にする (ダブルクリックして開く)
    • 中程度の学習曲線。
    • ミディアム プロフェッショナル ルック。
  3. JWSを使用して起動する
    • 高い学習曲線。
    • 非常にプロフェッショナルな外観。
于 2012-05-30T14:57:57.637 に答える
0

Java アプリケーションで (たとえば、Runtime.exec() または ProcessBuilder.start() を呼び出して) からプロセスを開始すると、それへの有効な Process 参照があり、Process クラスで destroy() メソッドを呼び出すことができます。その特定のプロセスを強制終了します。

ただし、呼び出したプロセスが新しいサブプロセスを作成する場合、それらは終了しない可能性があることに注意してください ( http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4770092を参照)。

一方、外部プロセス (Java アプリから生成したのではないプロセス) を強制終了したい場合、できることの 1 つは、それを可能にする O/S ユーティリティを呼び出すことです。たとえば、Unix / Linux の kill コマンドで Runtime.exec() を試し、戻り値をチェックして、アプリケーションが強制終了されたかどうかを確認できます (0 は成功を意味し、-1 はエラーを意味します)。しかし、もちろん、アプリケーション プラットフォームに依存することになります。

于 2016-03-21T10:06:24.747 に答える
0

コマンド ラインから実行する場合、コマンド ライン ウィンドウを閉じると、アプリケーションが途中で終了します。Windowsでそれを行う方法はわかりませんが、Linuxではプロセスをバックグラウンドで実行し、次のコマンドを使用して実行できます。

nohup java -jar myprogram.jar & 
于 2012-05-30T15:38:01.580 に答える