Java 正方形分割程序不绘制
我又回到了Java,我试图制作一个有一个正方形的程序,这个正方形变成了更小的相等正方形,这些正方形变成了4个更小的正方形,以此类推,但是当我试着运行这个程序时,它什么都不做 这是我的密码:Java 正方形分割程序不绘制,java,swing,for-loop,Java,Swing,For Loop,我又回到了Java,我试图制作一个有一个正方形的程序,这个正方形变成了更小的相等正方形,这些正方形变成了4个更小的正方形,以此类推,但是当我试着运行这个程序时,它什么都不做 这是我的密码: package main; import java.awt.Graphics; import java.util.ArrayList; import javax.swing.JPanel; public class mainPanel extends JPanel { @SuppressWarn
package main;
import java.awt.Graphics;
import java.util.ArrayList;
import javax.swing.JPanel;
public class mainPanel extends JPanel {
@SuppressWarnings("rawtypes")
ArrayList rects = new ArrayList();
int rectangles = 1;
int x = 1;
int y = 1;
int size = 1000;
long lastTime = System.nanoTime();
int frames = 0;
int fps = 0;
public mainPanel() {
setDoubleBuffered(true);
rects.add(new cube(x, y, size));
Thread t = new Thread() {
public void run() {
while (1 != 2) {
repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
};
t.start();
}
@SuppressWarnings("unchecked")
public void paint(Graphics g) {
super.paint(g);
Graphics g2 = g;
for (int i = 0; i < rectangles; i++) {
g.fillRect(x, y, size, size);
size /= 4;
x += size / 2 + 1;
y += size / 2 + 1;
rectangles += 4;
}
frames++;
if (System.nanoTime() - lastTime >= 1000000000) {
fps = frames;
frames = 0;
lastTime = System.nanoTime();
}
g.drawString("FPS: " + fps, 5, 15);
g.dispose();
}
}
当我运行程序时,即使我将睡眠功能降低到1000ms,也不会绘制任何方块,随着时间的推移,我的fps会降低很多。记住,Swing不是线程安全的;,在未创建的图形上下文上调用dispose也会产生副作用,例如不在屏幕上绘制任何内容,所以请小心立方体是什么?考虑提供一个说明你的问题的方法。这将减少混乱和更好的响应您可以使用Swing计时器而不是无限循环,您应该只绘制组件的状态,绘制方法应该包含尽可能少的逻辑。我认为您最大的问题是没有意识到在Swing中绘制,事实上大多数GUI都是破坏性的,不复利。查看和了解有关如何进行绘画的更多详细信息。。