我想在按下按钮时显示标签的移动一段时间。请帮忙。只需告诉我在更改 setBounds 期间我如何暂停进程一段时间,在这种情况下,睡眠方法暂停进程,但仅执行最后一个 setBound 语句:
void ActionPerformed(..){
Thread b = new Thread();
try{
label.setBounds(100,150,70,70);
b.sleep(1000);
label.setBounds(100,200,70,70);
b.sleep(1000);
label.setBounds(100,150,70,70);
}catch(InterruptedException e){
e.printStackTrace();
}
}
阅读摆动并发教程。经验法则:
- 您可能不会在事件调度线程中休眠,因为它会冻结 UI
- 您不能访问事件调度线程以外的线程中的 Swing 组件
因此,您需要一个单独的线程休眠,然后要求 EDT 修改标签的边界。
使用摆动计时器,或从后台线程调用SwingUtilities.invokeLater()
,以便修改标签边界的任务由 EDT 完成。
另请注意,sleep()
是一种静态方法。应该使用 Thread.sleep()
而不是 b.sleep()
来调用它。