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
repaint
static void drawHead() { System.out.println("Head"); errors = 1; p.removeAll(); p.revalidate(); p.repaint(); }
在repaint我的框架看起来像这样之前,http://i.imgur.com/XQlQeul.png
然后看起来像这样,http://i.imgur.com/RnVuUzt.png
我在想我的drawHead()方法有错误,但是我似乎无法解决问题。有人知道发生了什么吗?我想要的结果将是第一张图片,但已head被绘制。
drawHead()
head
您在super.paintComponent执行任何自定义绘画之前未先致电就中断了绘画链
super.paintComponent
Graphics如果是共享资源,则在绘制周期中绘制的每个组件都将共享相同的Graphics上下文,这意味着以前为Graphics上下文绘制的所有内容都将保留,除非您清除它。
Graphics
的工作之一paintComponent是Graphics通过使用组件的背景色填充绘画准备上下文
paintComponent