Java AWT / Swing Graphics - 为什么getGraphics()不能作为字段(实例变量)?

时间:2014-04-19 19:26:08

标签: java swing graphics awt

为什么在使getGraphics()为不同的MouseListener方法(mousedragged,mousereleased等)使用的实例变量时会出现NullPointerException,但是当你将getGraphics()保存为这些方法中的局部变量时,它可以正常工作吗? p>

1 个答案:

答案 0 :(得分:2)

  

为什么在使getGraphics()成为实例变量时会出现NullPointerException

可能是因为当您调用getGraphics()方法时,尚未初始化Graphics对象,因为该帧尚未可见。

在任何情况下,您都不应该使用getGraphics()方法来获取Graphics对象,因为您执行的任何绘制都只是临时的,并且在下次Swing确定需要重新绘制组件时将丢失。

自定义绘画应该在JPanel(或JComponent)的paintComponent()方法中完成。阅读Custom Painting上Swing教程中的部分,了解更多信息和示例。