作者efzbadmoon (蘿莉控)
看板java
標題[問題] sleep或wait過程中把code做完?
時間Wed Jan 18 00:28:19 2012
這是我ui介面的import
import javax.swing.*;
import java.awt.*;
只列出一部份的code
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
switch(r)
{
case 0:
demoui.btn0.setBackground(Color.
blue);
try {
wait(1000);
} catch (InterruptedException er) {er.printStackTrace();}
demoui.btn0.setBackground(null);
try {
wait(1000);
}catch(InterruptedException e3) {e3.printStackTrace();}
demoui.btn0.setBackground(Color.
GREEN);
demoui.btn0.setEnabled(true);break;
case 1:
...
..
.
}
這段的用意是在按下按鈕之後把某個btn變色後 停留一秒的時間再回無色
再停頓一段時間(1000是臨時設的)後變綠色
這個做法再變成藍色之後eclipse就會顯示出exception
還有一堆unknown source的訊息
會這樣做是因為查到的用法寫說wait如果只給int的話可以只做延遲
如果把wait換成Thread.sleep的話
顏色就會直接跳到綠色
我原本的做法是
Thread.sleep()
switch(r)
{變色} //藍
Thread.sleep()
switch(r)
{還原}
Thread.sleep()
switch(r2)
{變色} //綠
但是這種做法變藍色跟還原的部分似乎在sleep的過程中就執行完了
只看到最後的綠色
我以為是thread所以會同時去sleep
於是sleep兩個會一起結束 變藍色的部分太快就根本看不到
但是換成wait也是出現exception
請問我哪個部分做錯了呢?
或是我哪個地方沒有搞懂用法?
希望這不會是個太蠢的問題= ="
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.255.109.98
推 PsMonkey:搞不太懂甚麼要扯到 switch?問題點應該跟 switch 無關? 01/18 00:41
→ PsMonkey:還有請你寫明是 swing 還是其他東西(說不定是 GWT?) 01/18 00:42
→ PsMonkey:不然一樓給的 reference 會很無辜...... 01/18 00:43
抱歉 我接觸java的時間很短 不清楚應該提供怎樣的資訊 (其實C也沒有很好就是了)
這也是我第一次接觸gui介面
是這樣的
會扯到switch是因為我想說如果是因為兩個thread在同樣的層次上才會變成一起執行的話
用switch包起來可能就不會有這種問題了
不過好像沒用Q Q
※ 編輯: efzbadmoon 來自: 111.255.109.98 (01/18 00:51)
※ 編輯: efzbadmoon 來自: 111.255.109.98 (01/18 00:51)
推 LaPass:你用wait(10000); 看看會不會發生什麼事,雖然我沒用過AWT 01/18 11:12
推 LaPass:但我猜會鎖死沒回應.... 01/18 11:14
推 LaPass:變成藍色之後eclipse就會顯示出exception <= nullpointer? 01/18 11:17
推 PsMonkey:說得也是,我都忘記原 po 沒有附錯誤訊息了... 故鎖文 01/18 13:00
→ adrianshum:因為 wait 不是這樣用的, 大概收到的是沒有synchronize 01/18 17:28
→ adrianshum:引起的 exception 01/18 17:29