繁体   English   中英

是否可以在没有paintComponent的情况下使用Graphics在Java中绘制?

[英]Is it possible to draw in Java with Graphics without paintComponent?

我想访问 Graphics 类来绘制一个矩形,但不想调用paintComponent 方法。 是否可以?

绘画应该始终以绘画方法进行。

最常见的方式是在组件的paintComponent(...)方法中进行自定义绘制。

另一种方法是使用JLayer类“装饰”一个组件,并在JLayerpaint(...)方法中实现绘画。 阅读 Swing 教程中关于使用 JLayer 类装饰组件的部分,以获取更多信息和示例。

是的,这是可能的,就像可以在BufferedImage绘制一样(通过调用getGraphics()方法直接使用Graphics对象)。

但是,与BufferedImage的情况不同,对组件这样做可能会造成混乱。 原因是底层 AWT/Swing 代码期望组件自行绘制(参见Component.paintJComponent.paintComponent ),而它(底层 AWT/Swing 代码)将关注何时需要进行此渲染(例如滚动、调整大小等)。

因此,如果您从组件外部进行绘制,任何时候 AWT/Swing 决定“好吧,有一些新的绘制/重新绘制要完成”,它将调用“标准方法”,并期望您的绘制代码在那里.
当你在外面涂漆时,如果你没有特别安排通知“需要重新涂漆”的情况,部分或整个“从外面涂漆”将被涂漆或根本不涂漆或各种不同混乱的情况。

换句话说,如果您从外部进行绘画,您不仅需要编写进行绘画的代码,还需要编写:

  1. 重新实现 AWT/Swing 已经实现的大量代码,这些代码处理需要(重新)绘制组件的情况。
  2. 以某种方式禁用 AWT/Swing“本机”绘画处理。

请放心,您不希望那样(即使您认为这样做)。

附注。 如果你更好地描述为什么你需要它,你可能会得到更多关于如何以正确的方式进行操作的有用建议。

暂无
暂无

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

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