Jarame中的JPanel派生类 - 绘制副本

时间:2014-04-24 15:58:29

标签: java swing jpanel paintcomponent

我已将我的JPanel派生类添加到JFrame中。现在,当我想绘制一个椭圆形(在我的JPanel的paintComponent方法中使用fillOval)时,我看到两个椭圆被绘制。当我调用super.paintComponent或在JFrame类中以我的JPanel作为参数调用setContentPane时,问题就消失了。问题是,为什么会发生?当然,当JPanel和JFrame的左上角在同一个地方时,它不会发生。但不管怎么说,除非我调用super.paintComponent,否则JPanel不会变得不透明。主要问题是为什么它在默认内容窗格和我的JPanel上绘制两个。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

  

“主要问题是为什么它会在默认内容窗格和我的JPanel上绘制两个。”

它就是这样,但实际上你看到两者都在面板上绘制。始终使用super.paintComponent方法调用paintComponent(如果是ands或buts,则为no)或视为您正在体验的绘制工件。可以出于任何原因调用paintComponent方法,并且每次调用它都是绘制工件出现的另一个机会。调用super.paintComponent会将其删除。当您将内容窗格设置为面板时,似乎不会多次调用paintComponent方法,因此您不会获得这些工件。但重申一下,请始终致电super.paintComponent。设置内容窗格与问题或解决方案无关。