gpt4 book ai didi

Java Applet For-Loop 在 5 次迭代后停止绘制

转载 作者:行者123 更新时间:2023-12-02 06:07:01 25 4
gpt4 key购买 nike

我对此很陌生,所以请耐心等待。我制作了一个小程序,它从框架的左上角 (0,0) 开始生成扇形。该程序绘制 200 条随机颜色的线条,从小程序的顶部移动到底部。它们会反转该过程并留下一个空白的小程序框架。我想让这个迭代 5 次,但是我尝试使用 for 循环没有成功。

我在 for 循环中使用的代码是: for (int times = 0; times < 5; times++) { 如果(绘画)

我在主类中有一个用于绘画的 boolean 值。 boolean 绘画=true;

我已经重复代码 5 次,但我知道应该有更好的方法使用 for 循环。

我的代码有 5 次重复:

import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JApplet;

public class Main extends JApplet {

private static Random rand = new Random();

public void init() {
setBackground(Color.WHITE);
setSize(400, 300);
}

public void paint(Graphics g) {

for (int i = 0; i < 200; i++) {
Wait.holdOn(10);
g.setColor(new Color(rand.nextInt(0xFFFFFF)));
g.drawLine(0, 0, 200 - i, i);
}
for (int i = 0; i < 200; i++) {
Wait.holdOn(10);
g.setColor(getBackground());
g.drawLine(0, 0, i, 200 - i);

}
for (int i = 0; i < 200; i++) {
Wait.holdOn(10);
g.setColor(new Color(rand.nextInt(0xFFFFFF)));
g.drawLine(0, 0, 200 - i, i);
}
for (int i = 0; i < 200; i++) {
Wait.holdOn(10);
g.setColor(getBackground());
g.drawLine(0, 0, i, 200 - i);

}
for (int i = 0; i < 200; i++) {
Wait.holdOn(10);
g.setColor(new Color(rand.nextInt(0xFFFFFF)));
g.drawLine(0, 0, 200 - i, i);
}
for (int i = 0; i < 200; i++) {
Wait.holdOn(10);
g.setColor(getBackground());
g.drawLine(0, 0, i, 200 - i);

}
for (int i = 0; i < 200; i++) {
Wait.holdOn(10);
g.setColor(new Color(rand.nextInt(0xFFFFFF)));
g.drawLine(0, 0, 200 - i, i);
}
for (int i = 0; i < 200; i++) {
Wait.holdOn(10);
g.setColor(getBackground());
g.drawLine(0, 0, i, 200 - i);

}
for (int i = 0; i < 200; i++) {
Wait.holdOn(10);
g.setColor(new Color(rand.nextInt(0xFFFFFF)));
g.drawLine(0, 0, 200 - i, i);
}
for (int i = 0; i < 200; i++) {
Wait.holdOn(10);
g.setColor(getBackground());
g.drawLine(0, 0, i, 200 - i);

}
}


}

我也有等待类:

public class Wait{
public static void holdOn(long period){
try{
Thread.sleep(period);
}catch(Exception e){}
}
}

最佳答案

永远不要在 paint 方法或事件调度线程中等待。这只会让你的程序看起来很卡顿......

看看Concurrency in SwingHow to Use Swing Timers ...

您还应该确保在执行任何类型的绘画之前调用 super.paint!事实上,您应该避免覆盖 paint,因为这会导致您的更新闪烁,而是从 JPanel 等创建一个自定义组件,并覆盖它的 paintComponent 方法,参见 Performing Custom Painting了解更多详情...

关于Java Applet For-Loop 在 5 次迭代后停止绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22190321/

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