super.paint(g)的用途是什么?

时间:2014-05-02 17:56:03

标签: java applet awt paint super

有人可以解释一下super.paint(g)的用法是什么,g是Applets中的Graphics变量,或者是awt或swing或Java中的变量。

我做过研究,发现它用于覆盖但是这种覆盖的用途是什么?

我是初学者。如果可能,您可以解释paint(g)super.paint(g)example之间的区别吗?或者请帮我解释一下此代码?

/*
Let us consider this code 
This has only one paint declaration i.e; subclass's paint method declaration, no     declaration for superclass's paint function... when we explicitly call superclass's paint function 
what is the use of super.paint(g) and is it going to use superclass's paint declaration??
*/

import java.awt.*;
import java.applet.*;
/*
<applet code="superpaintDemo" height=768 width=1366>
</applet>
*/
class superpaintDemo extends Applet
{

    public void paint(Graphics g)
    {
        super.paint(g);
        g.drawString("This is Demo",200,200);
    }
}

3 个答案:

答案 0 :(得分:4)

  

public void paint(Graphics g)

     

涂抹容器。这会将paint转发给任何属于此容器子级的轻量级组件。 如果重新实现此方法,则应调用super.paint(g)以便正确呈现轻量级组件。如果子组件被g中的当前剪切设置完全剪切,则paint()将不会转发给该子组件。

直接来自the docs

答案 1 :(得分:3)

  1. 首先,我在自己的绘画方法中添加super.paint(g)。
  2.   

    重绘时,之前绘制的东西都会被清除。

    抱歉,我无法发布超过2个链接。

    1. 然后,我用自己的绘画方法删除super.paint(g)。

      remove super.paint(g)

    2.   

      你可以看到面板上的东西还在那里。

      当你添加super.paint(g)时,在你的方法中它会调用这个子类的超类中的方法。我的类RussiaPanel扩展了JPanel,JPanel扩展了JComponent。它将调用&#34;公共无效油漆(图形g)&#34; JComponet中的方法,以及Panel上的内容将被清除。有关更多详细信息,请参阅API文档。

      希望能帮助你,并原谅我可怜的英语。

答案 2 :(得分:1)

我猜它的用法就像你使用super.method()的其他方法一样。 这用于调用超类中的方法。基本上它取决于 根据您的目的,您决定如何使用它。在大多数情况下,我们 覆盖我们要完成的Component子类中的paint(Graphics g) 我们的意图。如果您致电super.paint(g),它可能会调用该方法 这个子类的超类。

如果你想要超级画首先(或最后),你应该调用super.paintComponent(g);

调用super.paint(g)会导致Swing中出现令人讨厌的递归。