【发布时间】:2014-03-09 14:23:40
【问题描述】:
我正在编写一个程序,它会画一条线,然后复制它,将它旋转 90 度,然后一遍又一遍地对整个图片做同样的事情。 我的问题是,我使用的 JFrame 有时不会绘制第一行,而是将整个 Frame 设为白色。我找不到原因,有时有效,有时无效,完全是随机的。也许我并没有真正了解paint() 方法的工作原理。 这是我的代码中不起作用的部分:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
public class WeirdThing extends JFrame {
static final int winWidth = 800;
static final int winHeight = 600;
boolean start;
public WeirdThing() {
super("WeirdThing");
start = true;
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
if (start) {
g2.setColor(Color.BLACK);
g2.drawLine(winWidth / 2, winHeight / 2, winWidth / 2 + 5, winHeight / 2);
start = false;
}
repaint();
}
public static void main(String[] args) {
WeirdThing a = new WeirdThing();
a.setDefaultCloseOperation(EXIT_ON_CLOSE);
a.setSize(winWidth, winHeight);
a.setVisible(true);
}
}
这是我得到的两个结果的图片: Wanted Result | Result I don't want
【问题讨论】: