首页 > 解决方案 > Thread.sleep() 等待整个 for 循环完成,即使它在 for 循环内

问题描述

当单击按钮时,我正在尝试为每个按钮上上下移动的矩形设置动画,就像指示哪个按钮处于活动状态一样。但我不喜欢它只显示在每个按钮上的想法,因为我想在动画它从每个按钮缓慢移动到另一个按钮之前完成它。因此,我尝试非常简单地做到这一点,即每 10 毫秒更改一次矩形的 Y“坐标”布局,最终看起来矩形根据执行的 for 循环向上或向下移动。但是发生的情况是,当单击按钮时,等待时间较长而矩形没有移动,然后它会立即出现在它应该在的位置上。看起来 Thread.sleep() 一次执行的次数与它应该执行的次数一样多,然后 setLayoutY() 函数只执行一次。这是代码

 public void moveRectangle(double newY) {
    if (statisticsRectangle.getY() > newY)
        for (double i = statisticsRectangle.getY(); i >= newY; i--) {
            statisticsRectangle.setLayoutY(i);
            try {
                Thread.sleep(10);
            }
            catch (InterruptedException e){}
        }
    else
        for (double i = statisticsRectangle.getY(); i <= newY; i++) {
            statisticsRectangle.setLayoutY(i);
            try{
                Thread.sleep(10);
            }
            catch (InterruptedException e){}
        }
}

public void addMemberButton() {
    moveRectangle(60);
}

标签: javajavafx

解决方案


推荐阅读