首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java小程序For-循环在5次迭代后停止绘制

Java小程序For-循环在5次迭代后停止绘制
EN

Stack Overflow用户
提问于 2014-03-05 14:31:36
回答 1查看 781关注 0票数 0

我是个新手,所以请耐心听我说。我已经创建了一个applet,它从框架(0,0)的左上角开始生成一个扇形。程序从小程序的顶部到底部随机绘制200条彩色线条。它会颠倒这一过程,给您留下一个空白的小程序框架。我想让这个循环迭代5次,但是我使用for循环的尝试并没有成功。

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

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

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

我的代码中有5个重复:

代码语言:javascript
复制
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);

    }
}


}

我还有一个等待类:

代码语言:javascript
复制
public class Wait{
public static void holdOn(long period){
try{
  Thread.sleep(period);
}catch(Exception e){}
}
}
EN

回答 1

Stack Overflow用户

发布于 2014-03-05 14:37:41

永远不要在paint method...or中等待事件调度线程。这只会让你的程序看起来像是卡顿...

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

您还应该确保在执行任何类型的绘制之前调用super.paint!事实上,您应该避免覆盖paint,因为这会导致您的更新闪烁,而不是从JPanel之类的东西创建一个自定义组件,并覆盖它的paintComponent方法,有关更多详细信息,请参阅Performing Custom Painting ...

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22190321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档