2016-01-23 65 views
0

我想在按下按钮时显示标签的运动一段时间。请帮忙。 只要告诉我怎样的setBounds的变化过程中暂停过程一会儿,在这种情况下的睡眠方法暂停该过程,但就在去年setBound语句只执行:如何在setBounds的情况下暂停过程

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(); 
     } 
} 
+1

欢迎来到[SO]。你还没有说你使用的是什么语言或系统。 –

+0

使用java,我想暂停更改setBounds –

回答

1

阅读swing concurrency tutorial。拇指法则:

  • 你可能不会在事件调度线程睡觉,因为它冻结UI
  • 你可能不访问比事件调度线程

所以其他线程Swing组件,你需要一个单独的睡眠线程,然后要求EDT修改标签的边界。

使用摆动计时器,或从后台线程调用SwingUtilities.invokeLater(),以便修改标签边界的任务由EDT完成。

另外,请注意,sleep()是一种静态方法。应该使用Thread.sleep()而不是b.sleep()来调用它。

相关问题