当前位置: 首页 > 知识库问答 >
问题:

super.paint(g)有什么用?

夹谷腾
2023-03-14

有人能解释一下super.paint(g)的用途吗,g是Applets或awt或swings或Java中的Graphics变量。

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

我是初学者。如果可能的话,你能解释一下paint(g)super之间的区别吗。用一个小的例子画(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);
    }
}

共有3个答案

越学文
2023-03-14
匿名用户

我猜它的用法和你使用的其他方法一样。方法()。这用于调用超类中的方法。基本上,这取决于你的目的和你决定如何使用它。在大多数情况下,我们覆盖组件子类中的paint(Graphics g),以实现我们的意图。如果你叫super。paint(g),它可能会调用该子类的超类中的方法。

如果你想让超类先绘制(或最后绘制),你应该调用super.paintComponent(g)

呼叫super。绘制(g)会在Swing中导致严重的递归。

禹昆
2023-03-14
  1. 首先,我在自己的绘画方法中添加super.paint(g)。

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

对不起,我不能有超过2个链接的声誉。

然后,我移除super。用我自己的画法画(g)。

删除超级。油漆(g)

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

当您添加super.paint(g)时,在您的方法中它将调用这个子类的超类中的方法。我的类RussiaPanel扩展了JPanel,JPanel扩展了JComponent。它将调用JComponet中的“公共空白油漆(图形g)”方法,面板上的东西将被清除。有关更多详细信息,您可以参考API文档。

希望对你有所帮助,并原谅我蹩脚的英语。

芮瑾瑜
2023-03-14

公共空漆(图形g)

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

直接从医生那里。

 类似资料:
  • 问题内容: 有什么作用(特别是当我们将其放入paintComponent()方法中时)?令我惊讶的是,我之前没有人问过这个问题。 我在Java Graphics上挖了我的学校笔记,在这行代码中唯一提到的是。 但是,这几周来,我一直在练习和使用Java paintComponent()方法。到目前为止,我还没有将该行包含在我的代码中,并且一切似乎都运行良好(到目前为止)。所以.. 问题: 它有什么作

  • 发展至今(2020 年 6 月份),GCC 编译器已经更新至 10.1.0 版本,其功能也由最初仅能编译 C 语言,扩增至可以编译多种编程语言,其中就包括 C++ 。 除此之外,当下的 GCC 编译器还支持编译 Go、Objective-C,Objective-C ++,Fortran,Ada,D 和 BRIG(HSAIL)等程序,甚至于 GCC 6 以及之前的版本还支持编译 Java 程序。但本

  • 问题内容: 我正在跟踪在使用时使用该标志的示例,但无法通过帮助系统弄清楚该标志在做什么。 问题答案: 告诉您安装命名模块,以便全局访问它。 但是重要的是要了解它通常仅用于提供命令行实用程序的软件包,以便它们的可执行组件在系统中可用。 如果您有多个程序使用同一软件包,则每个程序都应在本地安装该软件包。如果您确实想通过全局安装来共享已安装的软件包,则还必须使用。 请参阅此处有关全局安装软件包主题的文档

  • 做什么(特别是当我们将它放在paintComponent()方法中时)?我很惊讶以前没有人问过这个问题。 我翻出我关于Java图形的学校笔记,它在这行代码上唯一提到的是。 然而,这几周我一直在练习和学习Java的paintComponent()方法。到目前为止,我还没有将这一行包含在我的代码中,而且一切似乎都运行得很好(到目前为止)。所以.. 问题: 它做什么? 何时需要使用它? 在paintCo

  • 当我编译我的项目并检查运行所使用的资源时,大CPU/内存猪有时被称为,有时被称为。两者之间有什么区别,我是否应该直接调用?

  • 当使用gcc或Clang编译C源代码时,我总是使用标志来生成gdb的调试信息。 gcc-g-o helloworld. c 我注意到有些人推荐使用。和标志之间有什么区别?和之间也有区别吗?