繁体   English   中英

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

[英]What is use of super.paint(g)?

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

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

我是初学者。 如果可能的话,你可以用一个小example解释paint(g)super.paint(g)之间的区别,或者请帮我解释一下这段代码?

/*
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);
    }
}

public void paint(Graphics g)

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

直接来自文档

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

当它重新绘制时,之前绘制的东西被清除。

对不起,我无法发布超过2个链接的声誉。

  1. 然后,我在自己的paint方法中删除super.paint(g)。

    删除super.paint(g)

你可以看到面板上绘制的东西仍然存在。

当您添加super.paint(g)时,在您的方法中它将调用此子类的超类中的方法。我的类RussiaPanel扩展JPanel,JPanel扩展JComponent。 它将在JComponet中调用“public void paint(Graphic g)”方法,并且将清除Panel上的内容。有关更多详细信息,请参阅API文档。

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

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

你应该调用super.paintComponent(g)如果你想让超类先画(或最后一个);

调用super.paint(g)会在Swing中引起令人讨厌的递归。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM