JButton在动作上的平滑移动

时间:2013-02-28 06:05:32

标签: java swing animation concurrency jbutton

如果执行操作(例如按下按钮),如何平滑移动JButton。这是我的例子,但它不能正常工作:

   public void actionPerformed(ActionEvent event) {
   for(int i = 0; i<50; i++){
          ww.button.setLocation(ww.button.getLocation().x+1, ww.button.getLocation().y);//ww is a JFrame child
      try {
        Thread.sleep(20);

    } catch (InterruptedException e) {
        e.printStackTrace();
    }

   }

执行完行动后,我得到20 * 50毫秒的延迟,按钮位置设置在之前的loc + 50px,没有中间位置。

1 个答案:

答案 0 :(得分:3)

使用Swing时始终尽量避免使用Thread。在您的代码中,它将使主EDT线程进入休眠状态,这就是您无法查看中间位置的原因。使用Swing Timer尝试此操作,您将按预期工作。看看这里:How to Use Swing Timers并尝试使用Swing workers