作者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
1F:→ AI3767:因这码执行在swing的event内. setText也会在内,会等结束後, 12/19 01:17
2F:推 ukjhsa:需要强制呼叫重画 12/19 01:18
3F:→ AI3767:event的thread才会更新GUI. 请把这码改到另一Thread执行 12/19 01:19
4F:→ tailsice:我本来就是要让它停止的,不然一直跳,使用者就会看不到 12/19 01:35
5F:→ ukjhsa:update or repaint 原因同1楼,paintEvent不会立刻重绘 12/19 01:56
6F:→ ukjhsa:停0.1秒并不会使它重绘,除非update或等paint buffer满 12/19 02:00
7F:→ tailsice:我修正 updateUI() 和 repaint() 情况依旧,跪求解法 12/19 02:00
8F:→ ukjhsa:update(Graphics g) 呢? 12/19 20:07
9F:→ AI3767:呃?这码不就要它0.1s跳一次? 另开一个Thread给它run就好了 12/20 00:44