看板 java 關於我們 聯絡資訊
請教各位前輩 我要做一個抽獎程式 要有類似轉盤的樣式 所以,我設計了一段程式 但是一直無法成功運行 這個功能是這樣的 它會從 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