1

如果执行了操作(例如按下按钮),我如何才能顺利移动 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 中,没有中间位置。

4

1 回答 1

3

Thread在使用 Swing 时始终尽量避免。在您的代码中,它会使 EDT 主线程进入睡眠状态,这就是您无法查看中间位置的原因。使用Swing Timer试试这个,你会得到它按预期工作。看看这里:如何使用 Swing Timers并尝试使用Swing workers

于 2013-02-28T06:08:50.497 回答