2013-05-04 106 views
0

這裏是我的循環代碼(這是與我的循環的唯一代碼):While循環,使小程序的白色屏幕,反應遲鈍

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

當我啓動的小程序,它的白色屏幕和我不能關閉它,除非我在eclipse中按下「終止」按鈕。

+0

你有無限循環。除了完全凍結之外,你認爲會發生什麼? – dlev 2013-05-04 00:10:14

+0

while(true){}永遠是一個循環,沒有中斷;那麼爲什麼或什麼應該停止除了拋出異常之外的循環? – Kuchi 2013-05-04 00:10:22

回答

3

你有一個無限循環while阻塞UI線程。你不會說你是使用AWT還是Swing applet,無論哪種方式,結果都是一樣的。如果您使用的是Swing小程序,請使用Swing Timer。如果您使用的是舊的重量級AWT,請將其轉換爲Swing,然後按照以前的建議進行操作。

0

您正在佔用小應用程序EDT。你需要在另一個線程中運行你的循環。嘗試添加Thread gameThread;作爲變量並使用
gameThread = new Thread() {
public void run() {
while (condition) {
//code here
}
}
}
然後gameThread.start()都在您的小程序開始方法和gameThread.join()在您的小程序停止方法。