有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JFrame中的java JPanel派生类

我已经将我的JPanel派生类添加到JFrame中。现在,当我想画一个椭圆形(在我的JPanel的paintComponent方法中使用fillOval)时,我看到两个椭圆形正在被绘制。当我调用super时,问题就消失了。paintComponent,或者当我在JFrame类中调用setContentPane并将我的JPanel作为参数时。问题是,为什么会发生这种情况?当然,当JPanel和JFrame的左上角位于同一位置时,就不会发生这种情况。但不知何故,JPanel不是不透明的,除非我调用super。油漆组件。主要问题是为什么它同时在默认内容窗格和my JPanel上绘制。谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    " The main question is why does it paint BOTH on the default content pane AND my JPanel."

    看起来是这样的,但实际上你看到两个都被画在了面板上。始终在paintComponent方法中调用super.paintComponent(如果是AND或buts,则为否),否则看到您正在经历的绘制瑕疵。可以出于多种原因调用paintComponent方法,每次调用它时,都是出现绘制工件的另一个机会。调用super.paintComponent会清除这些内容。当您将内容窗格设置为面板时,似乎没有多次调用paintComponent方法,因此您不会得到这些工件。但重申一下,一定要打电话给super.paintComponent。设置内容窗格与问题或解决方案无关