Thread.sleep()等待整个循环完成,即使它在循环内部

时间:2018-10-01 10:16:27

标签: java javafx

当按钮被单击时,我试图为每个按钮上上下移动的矩形设置动画,就像哪个按钮处于活动状态。但是我不喜欢只在每个按钮上显示它的想法,因为在我希望对其进行动画处理之前,它需要从每个按钮缓慢移动到另一个按钮。 因此,我尝试非常简单地做到这一点,即每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);
}

0 个答案:

没有答案