java - 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);
}
解决方案
推荐阅读
- laravel-5.8 - 使用 EmailAddress 作为列名时如何修复
- laravel - Bitbucket 管道 Laravel 与 MySQL php_network_getaddresses
- r - 使用 R 将每个字符行转换为字符串
- python - 如何在字符串中查找模式并在 HTML 代码中替换
- android - 如果使用 Dagger2 初始化对象,是否仍然需要检查其是否为空?
- c# - 我团队的一位高级开发人员告诉我,编写这样的 SQL 命令是安全的,“因为它是参数化的”,但我不明白如何
- corda - 如何修复在测试网错误中将cordapp部署到corda节点
- ssas - 年初至今的 MDX 计算量度
- angular - Angular:如何在服务组件内缓存 api 调用的响应?
- angular - 属性“_touched”是私有的,只能在“AbstractControl”类中访问。?