作者tailsice (tailsice)
看板java
標題[J2SE] Java Swing JLabel 一問
時間Wed Dec 19 00:56:03 2012
請教各位前輩
我要做一個抽獎程式
要有類似轉盤的樣式
所以,我設計了一段程式
但是一直無法成功運行
這個功能是這樣的
它會從 0 開始跳起
一直跳到指定的數字
for (int i = 0; i <pick[num]; i++) {
String input = String.valueOf(i);
L2.setText(input);
try {
Thread.sleep(100);
//Main.sleep(100);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
L2.setText(pick[num].toString());
L2 是一個 JLabel
根據理想狀態 L2 應該會先跳 0 然後停 0.1 秒
然後再跳 1,再跳 0.1 秒
可是,實際運行狀況,則會是停了數秒後
L2 直接顯示指定值
想請教各位大大,我是否是哪裡邏輯思路錯誤呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.162.101.33
→ AI3767:因這碼執行在swing的event內. setText也會在內,會等結束後, 12/19 01:17
推 ukjhsa:需要強制呼叫重畫 12/19 01:18
→ AI3767:event的thread才會更新GUI. 請把這碼改到另一Thread執行 12/19 01:19
→ tailsice:我本來就是要讓它停止的,不然一直跳,使用者就會看不到 12/19 01:35
→ ukjhsa:update or repaint 原因同1樓,paintEvent不會立刻重繪 12/19 01:56
→ ukjhsa:停0.1秒並不會使它重繪,除非update或等paint buffer滿 12/19 02:00
→ tailsice:我修正 updateUI() 和 repaint() 情況依舊,跪求解法 12/19 02:00
→ ukjhsa:update(Graphics g) 呢? 12/19 20:07
→ AI3767:呃?這碼不就要它0.1s跳一次? 另開一個Thread給它run就好了 12/20 00:44