java中paint的作用_为什么必须使用paintComponent方法在Java中进行绘制?

小编典典

那是因为这就是它的工作方式。它是以此方式设计的。但是我想你的问题是关于“为什么”

请记住,Swing大约在15年前问世。批评之一是该API太慢(事实是,它之所以缓慢是因为人们并不真正了解如何使用它,但这是另一回事了),因此在设计API时必须考虑性能。

涉及许多因素…

Swing使用被动绘画过程,这意味着将绘画请求发送到绘画子系统并计划(返回EDT)进行处理。绘画子系统决定应绘画的内容,时间和量。这是在亵渎油漆子系统时完成的。

这意味着您永远不会真正知道何时可以执行绘制循环,因此我们需要某种方式来响应这些请求。

多功能性是另一个因素。API足够抽象,以至于与组件的绘制位置无关(很多)。也就是说,您可能被涂到屏幕,打印机甚至图像上。这意味着您无需重复很多绘画代码即可使其在不同的设备上运行。

您也永远不知道组件何时可以显示(即何时将其附加到本机对等端)。这意味着图形上下文可能是null,因此拥有“

helper”方法实际上可能会引起更多问题。当paintComponent被调用时,你(大部分)保证有一个有效的图形上下文要绘制的。

可扩展性将是另一个因素。不仅很容易重写paintComponent来更改某些组件绘制的方式,而且绘制系统也可以像当前情况一样提供扩展的Graphics上下文。当paintComponent(至少由paint子系统)调用时,它保证Graphics上下文将是的实例Graphics2D,它是的扩展Graphics,为API提供了许多重要的增强。

无需更改人们正在使用的基类就可以完成所有操作,因此,如果他们不想使用这些功能,则不受其影响。

您可能需要通读…

更多细节

并记住“绘画很有趣”;)

其他想法

要考虑的其他考虑因素之一是,GraphicsAPI是绘画的核心,不仅考虑UI,而且考虑打印和图像处理。API与目标断开连接,从而具有更大的灵活性,但也具有通用性。

这意味着,如果您需要打印到打印机或渲染为图像,则可以使用与在屏幕上绘画相同的API。

2020-11-01

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值