涂漆方法是啥?它是如何工作的?
Posted
技术标签:
【中文标题】涂漆方法是啥?它是如何工作的?【英文标题】:what does the paint method? how does it work?涂漆方法是什么?它是如何工作的? 【发布时间】:2019-11-04 20:38:42 【问题描述】:paint方法接收到Graphics类创建的对象作为参数后做了什么?
例如在这段代码中:
public class unaClase extends Applet
public void paint(Graphics g)
g.drawRect(0, 0, 400, 200);
尝试追踪源代码以查看其代码,从而能够理解它的作用,但它没有向我显示任何东西
我想知道是什么用它接收的参数来绘制?
PD:我知道苹果已经死了,我只是想很好地了解发生了什么,它做了什么
【问题讨论】:
小程序没有“过时”;小程序完全死了。 您能更具体地说明您的要求吗?如何使用图形上下文进行绘画可能是一个非常冗长的讨论。 您是在覆盖它,而不是覆盖它。 paint() 知道该做什么,因为您通过在方法实现中添加指令告诉它该做什么:g.drawRect(0, 0, 400, 200);
。这就是它的作用。
我不知道代码胶囊是什么。以下是我将如何解释绘画方法。想象一下,您的工作是在广告牌上为客户展示广告,并在广告损坏时重新展示。这基本上就是一个小程序。现在想象我是你的客户。为了让我在广告牌上显示我想要的任何东西,你给了我一张大纸和一些绘画工具(那是 Graphics 对象)。我对它们做任何我想做的事情(比如画一个矩形),然后你在广告牌上显示我在纸上(矩形)上画的东西。
如果绘图损坏,你再给我一张纸(即你用图形再次调用paint),然后我再次绘制我的矩形(或者如果我决定绘制我想绘制的任何东西别的东西),然后你在广告牌上展示我的新画。
【参考方案1】:
当我使用paint方法(如示例代码中)时,我在技术上覆盖它(除非我使用了super.paint ...),然后它的代码将是我刚刚定义的那个;所以我的问题是,paint 如何知道如何处理我正在经历的参数(图形)?
实际术语是overriding
。您通常要做的第一件事是调用super.paint()
到父版本。 Graphics
(或Graphics2D
,它有其他方法但需要强制转换)允许使用这些方法来绘制、旋转和操作像素。它使用操作系统支持的本机方法调用在内部进行处理。
如果您要绘画,您应该在 JPanel
中进行并覆盖 paintComponent(Graphics g)
。在https://docs.oracle.com/javase/tutorial/index.html查看绘画教程
【讨论】:
以上是关于涂漆方法是啥?它是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 应用程序密钥 - 它是啥以及它是如何工作的?