[英]Is it possible to draw in Java with Graphics without paintComponent?
我想访问 Graphics 类来绘制一个矩形,但不想调用paintComponent 方法。 是否可以?
绘画应该始终以绘画方法进行。
最常见的方式是在组件的paintComponent(...)
方法中进行自定义绘制。
另一种方法是使用JLayer
类“装饰”一个组件,并在JLayer
的paint(...)
方法中实现绘画。 阅读 Swing 教程中关于使用 JLayer 类装饰组件的部分,以获取更多信息和示例。
是的,这是可能的,就像可以在BufferedImage
绘制一样(通过调用getGraphics()
方法直接使用Graphics
对象)。
但是,与BufferedImage
的情况不同,对组件这样做可能会造成混乱。 原因是底层 AWT/Swing 代码期望组件自行绘制(参见Component.paint
或JComponent.paintComponent
),而它(底层 AWT/Swing 代码)将关注何时需要进行此渲染(例如滚动、调整大小等)。
因此,如果您从组件外部进行绘制,任何时候 AWT/Swing 决定“好吧,有一些新的绘制/重新绘制要完成”,它将调用“标准方法”,并期望您的绘制代码在那里.
当你在外面涂漆时,如果你没有特别安排通知“需要重新涂漆”的情况,部分或整个“从外面涂漆”将被涂漆或根本不涂漆或各种不同混乱的情况。
换句话说,如果您从外部进行绘画,您不仅需要编写进行绘画的代码,还需要编写:
请放心,您不希望那样(即使您认为这样做)。
附注。 如果你更好地描述为什么你需要它,你可能会得到更多关于如何以正确的方式进行操作的有用建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.