当前位置: 首页 > 面试题库 >

super.paintComponent(g)有什么作用?

葛季萌
2023-03-14
问题内容

有什么作用super.paintComponent(g)(特别是当我们将其放入paintComponent()方法中时)?令我惊讶的是,我之前没有人问过这个问题。

我在Java Graphics上挖了我的学校笔记,在这行代码中唯一提到的是"do not delete"

但是,这几周来,我一直在练习和使用Java
paintComponent()方法。到目前为止,我还没有将该行包含在我的代码中,并且一切似乎都运行良好(到目前为止)。所以..

问题:

  1. 它有什么作用?
  2. 我们什么时候需要使用它?
  3. 通过在paintComponent()中编写它,给我们带来什么好处?

问题答案:
  1. 它有什么作用?

它将打印该组件,就好像您没有覆盖该paintComponent方法一样。例如,如果您设置了背景色,则通常由您要扩展的类来绘制背景色。

  1. 我们什么时候需要使用它?

如果不在整个组件上绘画,则可以使用它。您不绘画的零件将“照亮”,这意味着您应该让超类绘画那些零件。例如,以背景色为例:如果仅在组件中间绘制一个圆圈,super.paintComponent则将确保在圆圈周围绘制背景色。

如果您 确实
绘制了组件的整个区域,那么您将在任何super.paintComponent绘制的内容之上绘制,因此调用super.paintComponent没有意义。

  1. 通过在paintComponent()中编写它,给我们带来什么好处?

那是放置它的唯一合乎逻辑的地方。paintComponent在应喷涂组件时调用,并且如上所述,如果您自己不喷涂整个组件,则需要super.paintComponent在穿透的零件上进行喷涂。

文档中paintComponent说,它相当不错:

[…]如果您没有调用super的实现,则必须使用opaque属性,即,如果该组件是不透明的,则必须使用非不透明的颜色完全填充背景。如果您不尊重不透明属性,则可能会看到视觉瑕疵。



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

  • 有人能解释一下的用途吗,是Applets或awt或swings或Java中的变量。 我做过研究,发现它是用来覆盖的,但是这个覆盖有什么用呢? 我是初学者。如果可能的话,你能解释一下和

  • 问题内容: 我对几件事有些困惑: 示例代码,显示了我的问题,这是无法编译的 我创建了一个全局对象, 并在其中绘制了内容 ,但我没有在游戏循环内调用 它,这样做是否是一种好习惯? 我应该在循环和函数内部使用吗? 另一件事,如何正常工作?,因为尝试删除此行代码,因此没有任何反应。 我了解java docs的dispose()的工作方式 , 但是我没有注意到dispose()与否的任何区别。 我的程序运

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

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

  • 问题内容: 如果一个网页以…开头有什么区别 并且如果页面以 如果没有区别,我想我可以忽略元标头,因为我只想在所有IE版本中以最标准的方式呈现它。 问题答案: 这个答案是几年前发布的,现在的问题确实应该是 您_是否 _应该考虑 在您的网站上 使用 标记? 微软对其浏览器所做的更改(更多有关以下内容)。 根据您支持的Microsoft浏览器,您可能不需要继续使用该标记。如果您需要支持IE9或IE8,那