gpt4 book ai didi

java - 矩形着色逻辑

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:31:17 25 4
gpt4 key购买 nike

我的 Canvas 上有一个三个矩形。我想改变三个矩形的颜色慢慢地一张一张。例如:启动应用程序时,用户应该能够看到三个具有相同颜色(蓝色)的矩形。2 秒后矩形颜色应变为红色。2 秒后,下一个矩形的颜色应该再次改变。最后一个也是以同样的方式完成的,这意味着在第二个矩形的 2 秒之后。

我用自己的方式写的。但它不起作用。所有的矩形一起改变。我要一张一张。

谁能给我逻辑。

final Runnable timer = new Runnable() {

public void run() {


//list of rectangles size =3; each contain Rectangle.
for(int i = 0 ; i < rectangleList.size();i++){

if(rectangleListt.get(i).getBackgroundColor().equals(ColorConstants.blue)){
try {

rectangleList.get(i).setBackgroundColor(ColorConstants.yellow);
Thread.sleep(1500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

//rectSubFigureList.get(i).setBorder(null);
}/*else{
rectSubFigureList.get(i).setBackgroundColor(ColorConstants.blue);
}*/


}

最佳答案

您可能在 Swing 的事件线程或 EDT(用于事件分派(dispatch)线程)内部调用 Thread.sleep,这将导致线程本身进入休眠状态。由于此线程负责 Swing 的所有图形和用户交互,这实际上会使您的整个应用程序进入 hibernate 状态,这不是您希望发生的情况。相反,请阅读并为此使用 Swing Timer。

引用资料:

要扩展 Hidde 的代码,您可以:

// the timer:     
Timer t = new Timer(2000, new ActionListener() {
private int changed = 0; // better to keep this private and in the class
@Override
public void actionPerformed(ActionEvent e) {
if (changed < rectangleList.size()) {
rectangleList.setBackgroundColor(someColor);
} else {
((Timer) e.getSource()).stop();
}
changed++;
}
});
t.start();

关于java - 矩形着色逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10672940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com