Panel.repaint(); 弄乱了布局
JPanel启动
p = new JPanel() { private static final long serialVersionUID = 1L; public void paintComponent(Graphics g) { if(errors == 1) g.drawOval(215, 50, 75, 75); else if(errors == 2) g.drawOval(200,200,200,200); } };
调用repaint
方法
static void drawHead() { System.out.println("Head"); errors = 1; p.removeAll(); p.revalidate(); p.repaint(); }
在repaint
框架之前, 请看http://sofzh.miximages.com/java/XQlQeul.png
然后看起来像这样, http://i.imgur.com/RnVuUzt.png
我在想我的drawHead()
方法有一个错误,但我似乎无法解决这个问题。 有谁知道发生了什么? 我想要的结果将是第一张图片,但是画了一个head
。
在执行任何自定义绘制之前,您没有先调用super.paintComponent
,从而打破了绘制链
Graphics
是共享资源,在绘制周期中绘制的每个组件将共享相同的Graphics
上下文,这意味着除非您清除它,否则之前绘制到Graphics
上下文的任何内容都将保留。
paintComponent
一个工作是通过使用组件的背景颜色填充Graphics
上下文