一个关于Sleep的小问题,急!在线等!

Cyberlark 2005-12-02 12:35:42
public void jButton1_actionPerformed(ActionEvent e) {
jLabel4.setText("****");
this.repaint();
this.jLabel4.repaint();
this.jLabel4.revalidate();
this.jLabel4.updateUI(); //这些方法都没有用
try{
Thread.sleep(3000);
}catch( Exception ie){
System.out.println("Wrong....from sleep");
}
}

做了一个按扭,可是运行时死3秒,然后才更新jLabel4,

我现在想在sleep前把jLabel4的文本改了,怎么办?

谢谢了!
...全文
211 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cyberlark 2005-12-03
  • 打赏
  • 举报
回复
谢谢,问题解决了!
用弹出对话框即能刷新界面!
老無所依 2005-12-02
  • 打赏
  • 举报
回复
Thread.sleep(3000)就是让线程沉睡三秒的啊
gemouzhi 2005-12-02
  • 打赏
  • 举报
回复
这是因为你的swing的队列dispatch还没从actionPerformed回来。当然不可能触发其他的更新。

你必须再写一个线程用later的触发setText,其他的如repaint之类都不用。
Cyberlark 2005-12-02
  • 打赏
  • 举报
回复
难道没有改进的方法,用TIMER改我就要大手术了!麻烦大家帮我想想办法!
suprwx 2005-12-02
  • 打赏
  • 举报
回复
这种功能还是用Timer比较好
Cyberlark 2005-12-02
  • 打赏
  • 举报
回复
这题文本框,我只是一个比喻,其实,在我程序中,是向panel中加一个Label(draw函数), 而

sleep也可以用其他的函数(只是为了做延时)
public void jButton1_actionPerformed(ActionEvent e) {
draw();
try{
Thread.sleep(3000);
}catch(Exception ie){
System.out.println("Wrong....from sleep");
}
}
我如何让draw做完以后在Sleep 或者 Wait延时 三秒中? ?
Cyberlark 2005-12-02
  • 打赏
  • 举报
回复
谢谢各位,有没有更好的解决方案?!
xpzheng 2005-12-02
  • 打赏
  • 举报
回复
同意楼上的说法,事件和线程之间应该有一个先后顺序
xdop 2005-12-02
  • 打赏
  • 举报
回复
setText() 函数本身就会调用刷新代码

revalidate();
repaint();

而repaint()过程是向操作系统发送消息(最终交给本地API来做)

你所说的问题根本原因在于——

更新事件比线程休眠指令晚到达,从而导致更新滞后
niko7 2005-12-02
  • 打赏
  • 举报
回复
可以在 sleep 之前调用刷新吗?
ahFaye 2005-12-02
  • 打赏
  • 举报
回复
有可能是改了文本没刷新
ahFaye 2005-12-02
  • 打赏
  • 举报
回复
可以mousedown 改文本
mouseup Thread.sleep(3000)
Cyberlark 2005-12-02
  • 打赏
  • 举报
回复
对呀,我希望在SLEEP前更改jLabel.text的值!!

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧