JFrame中的java JPanel派生类
我已经将我的JPanel派生类添加到JFrame中。现在,当我想画一个椭圆形(在我的JPanel的paintComponent方法中使用fillOval)时,我看到两个椭圆形正在被绘制。当我调用super时,问题就消失了。paintComponent,或者当我在JFrame类中调用setContentPane并将我的JPanel作为参数时。问题是,为什么会发生这种情况?当然,当JPanel和JFrame的左上角位于同一位置时,就不会发生这种情况。但不知何故,JPanel不是不透明的,除非我调用super。油漆组件。主要问题是为什么它同时在默认内容窗格和my JPanel上绘制。谢谢你的帮助
# 1 楼答案
看起来是这样的,但实际上你看到两个都被画在了面板上。始终在
paintComponent
方法中调用super.paintComponent
(如果是AND或buts,则为否),否则将看到您正在经历的绘制瑕疵。可以出于多种原因调用paintComponent
方法,每次调用它时,都是出现绘制工件的另一个机会。调用super.paintComponent
会清除这些内容。当您将内容窗格设置为面板时,似乎没有多次调用paintComponent
方法,因此您不会得到这些工件。但重申一下,一定要打电话给super.paintComponent
。设置内容窗格与问题或解决方案无关