Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AWT/Swing Graphics-为什么getGraphics()不能作为字段(实例变量)?_Java_Swing_Graphics_Awt - Fatal编程技术网

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

Java AWT/Swing Graphics-为什么getGraphics()不能作为字段(实例变量)?,java,swing,graphics,awt,Java,Swing,Graphics,Awt,为什么在将getGraphics()作为不同的MouseListener方法(mousedragged、MouseRelease等)使用的实例变量时,会出现NullPointerException,但在这些方法中将getGraphics()保存为局部变量时,它就可以正常工作 为什么将getGraphics()作为实例变量时会出现NullPointerException 可能是因为调用getGraphics()方法时图形对象尚未初始化,因为帧尚未可见 在任何情况下,您都不应该使用getGraphi

为什么在将getGraphics()作为不同的MouseListener方法(mousedragged、MouseRelease等)使用的实例变量时,会出现NullPointerException,但在这些方法中将getGraphics()保存为局部变量时,它就可以正常工作

为什么将getGraphics()作为实例变量时会出现NullPointerException

可能是因为调用getGraphics()方法时图形对象尚未初始化,因为帧尚未可见

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


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

始终仅使用
图形
传入的对象
paintComponent()
方法。