我是个新手,所以请耐心听我说。我已经创建了一个applet,它从框架(0,0)的左上角开始生成一个扇形。程序从小程序的顶部到底部随机绘制200条彩色线条。它会颠倒这一过程,给您留下一个空白的小程序框架。我想让这个循环迭代5次,但是我使用for循环的尝试并没有成功。
我在for循环中使用的代码是: for (int次= 0;次< 5;times++) { if (绘画)
我在主类中有一个用于绘画的布尔值。布尔painting=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){}
}
}发布于 2014-03-05 14:37:41
永远不要在paint method...or中等待事件调度线程。这只会让你的程序看起来像是卡顿...
看看Concurrency in Swing和How to Use Swing Timers..。
您还应该确保在执行任何类型的绘制之前调用super.paint!事实上,您应该避免覆盖paint,因为这会导致您的更新闪烁,而不是从JPanel之类的东西创建一个自定义组件,并覆盖它的paintComponent方法,有关更多详细信息,请参阅Performing Custom Painting ...
https://stackoverflow.com/questions/22190321
复制相似问题