Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动作按钮的平滑移动_Java_Swing_Animation_Concurrency_Jbutton - Fatal编程技术网

Java 动作按钮的平滑移动

Java 动作按钮的平滑移动,java,swing,animation,concurrency,jbutton,Java,Swing,Animation,Concurrency,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 {

如果执行了操作(如按下按钮),如何平稳地移动按钮。下面是我的示例,但它并不适用:

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

   }
public void actionPerformed(ActionEvent事件){

对于(int i=0;i在使用Swing时始终尽量避免使用
线程
。在您的代码中,它会使主EDT线程处于休眠状态,这就是为什么您无法查看中间位置。尝试使用此方法,您将使其按预期工作。查看此处:并尝试使用。

尝试使用布局。ww是什么?ar也做了吗你可以为你的按钮使用多态性。你能再显示一点代码吗?你还应该注意,如果你使用的是布局管理器(你应该),布局管理器将希望在父容器无效时将按钮移回其认为应该移动的位置,这可能会导致不希望的结果actions@MadProgrammer是的,当容器自行重新验证/重新绘制时,它可能会根据其策略更改其子容器的位置。抱歉,Harry,这不是“在”你说的,只是“附加” :P@MadProgrammer是的,我知道:)这段代码在win xp中运行良好:
public void actionPerformed(ActionEvent事件){for(int I=0;I