0

これが私のループコードです(これは私のループに関連する唯一のコードです):

while(true)
    {
        try {
            Thread.sleep(20);
            System.out.println("1");
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }           
    }

アプレットを起動すると白い画面になり、Eclipse で [終了] ボタンを押さない限り閉じることができません。

4

3 に答える 3

3

無限whileループで UI スレッドをブロックしています。AWT アプレットと Swing アプレットのどちらを使用しているかはわかりませんが、どちらの方法でも結果は同じになります。Swing アプレットを使用している場合は、Swing Timerを使用します。古い重量級の AWT を使用している場合は、それを Swing に変換し、前のアドバイスに従ってください。

于 2013-05-04T00:13:18.793 に答える
0

あなたが無限ループを作ったと言ったように:

while(true){
//something
}

休憩はありません。では、スローされた例外を除いて、なぜ、または何がループを停止する必要があるのでしょうか?

InterruptedException がいつスローされるかを確認するには、JavaDoc を読む必要があります: http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html

于 2013-05-04T00:12:39.887 に答える
0

あなたはアプレットEDTを独占しています。別のスレッドでループを実行する必要があります。Thread gameThread;変数として追加してから、アプレットの開始メソッドとアプレットの停止メソッドの両方で使用 してみてください。
gameThread = new Thread() {
public void run() {
while (condition) {
//code here
}
}
}
gameThread.start()gameThread.join()

于 2013-05-04T00:18:59.107 に答える