[J2SE] Java Swing JLabel 一問

看板java作者 (tailsice)時間11年前 (2012/12/19 00:56), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/1
請教各位前輩 我要做一個抽獎程式 要有類似轉盤的樣式 所以,我設計了一段程式 但是一直無法成功運行 這個功能是這樣的 它會從 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

12/19 01:17, , 1F
因這碼執行在swing的event內. setText也會在內,會等結束後,
12/19 01:17, 1F

12/19 01:18, , 2F
需要強制呼叫重畫
12/19 01:18, 2F

12/19 01:19, , 3F
event的thread才會更新GUI. 請把這碼改到另一Thread執行
12/19 01:19, 3F

12/19 01:35, , 4F
我本來就是要讓它停止的,不然一直跳,使用者就會看不到
12/19 01:35, 4F

12/19 01:56, , 5F
update or repaint 原因同1樓,paintEvent不會立刻重繪
12/19 01:56, 5F

12/19 02:00, , 6F
停0.1秒並不會使它重繪,除非update或等paint buffer滿
12/19 02:00, 6F

12/19 02:00, , 7F
我修正 updateUI() 和 repaint() 情況依舊,跪求解法
12/19 02:00, 7F

12/19 20:07, , 8F
update(Graphics g) 呢?
12/19 20:07, 8F

12/20 00:44, , 9F
呃?這碼不就要它0.1s跳一次? 另開一個Thread給它run就好了
12/20 00:44, 9F
文章代碼(AID): #1GqA0ebB (java)