作者efzbadmoon (萝莉控)
看板java
标题[问题] sleep或wait过程中把code做完?
时间Wed Jan 18 00:28:19 2012
这是我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
2F:推 PsMonkey:搞不太懂甚麽要扯到 switch?问题点应该跟 switch 无关? 01/18 00:41
3F:→ PsMonkey:还有请你写明是 swing 还是其他东西(说不定是 GWT?) 01/18 00:42
4F:→ 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)
5F:推 LaPass:你用wait(10000); 看看会不会发生什麽事,虽然我没用过AWT 01/18 11:12
6F:推 LaPass:但我猜会锁死没回应.... 01/18 11:14
7F:推 LaPass:变成蓝色之後eclipse就会显示出exception <= nullpointer? 01/18 11:17
8F:推 PsMonkey:说得也是,我都忘记原 po 没有附错误讯息了... 故锁文 01/18 13:00
9F:→ adrianshum:因为 wait 不是这样用的, 大概收到的是没有synchronize 01/18 17:28
10F:→ adrianshum:引起的 exception 01/18 17:29