【问题标题】:Java Applet For-Loop to Stop Paint after 5 iterationsJava Applet For-Loop 在 5 次迭代后停止绘制
【发布时间】:2014-03-05 06:31:36
【问题描述】:

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

我在 for 循环中使用的代码是: for (int times = 0; times

我在 Main 类中有一个用于绘画的布尔值。 布尔绘画=真;

我已经将代码重复了 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){}
}
}

【问题讨论】:

标签: java swing for-loop applet draw


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的建议,因为我还在学习,还没有使用计时器或超级绘画。我真的只是想知道如何创建一个 for 循环,这样我就不必重复相同的代码 5 次。对那件作品有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多