看板 java 關於我們 聯絡資訊
這是我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
tkcn:http://goo.gl/t3bHe 01/18 00:39
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