【发布时间】:2013-05-30 03:53:48
【问题描述】:
我正在尝试根据paint() 或paintComponent() 方法中的一些计算来绘制和绘制一些几何形状。但是,我意识到paint() 或paintComponent() 中的打印和其他计算语句会执行2 次或3 次。例如下面代码中的 print 语句被执行了两次,并且在控制台中打印了两次“help”这个词:
public class Skeleton extends JPanel {
public void paint(Graphics g){
Graphics2D g2d = (Graphics2D) g;
g2d.drawOval(50, 50, 100, 100);
System.out.println("help");
}
然后在控制台打印出来的部分是这样的:
help
help
这是我的main() 方法
public static void main(String[] args) {
JFrame frame = new JFrame("Java 2D Skeleton");
frame.add(new Skeleton());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(870, 890);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
更糟糕的是,如果我有一个类公共变量并且我在 paint() 方法中将其值增加 1。这导致值增加了 2。
我在这个网站的某个地方读到了 paint() 方法自动调用其他三种方法,我认为它们会导致这个问题。
我还在另一个网站上尝试了一些建议的解决方案来覆盖方法paintComponent() 而不是方法paint()。但是我仍然有同样的问题。
请帮我解决它。
【问题讨论】:
标签: java swing awt paint paintcomponent