Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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 是否需要处理从Component.getGraphics()返回的图形上下文?_Java_Awt - Fatal编程技术网

Java 是否需要处理从Component.getGraphics()返回的图形上下文?

Java 是否需要处理从Component.getGraphics()返回的图形上下文?,java,awt,Java,Awt,我了解到,在使用完图形对象后,需要对已创建的图形对象调用dispose()。然而,我很难从API文档中弄清楚何时创建图形对象 显然,当一个图形对象被传递到回调中时,我没有创建它,也不应该处理它(或者根据我所听到的以任何其他方式修改它),如果我调用Graphics.create(),那么我正在创建它,我应该处理它 但是当我调用Component.getGraphics()时会怎么样呢?这是创建一个我负责处理的新Graphics2D对象,还是返回一个我不应该修改的现有对象的引用?文档中没有说明这两种

我了解到,在使用完图形对象后,需要对已创建的图形对象调用dispose()。然而,我很难从API文档中弄清楚何时创建图形对象

显然,当一个图形对象被传递到回调中时,我没有创建它,也不应该处理它(或者根据我所听到的以任何其他方式修改它),如果我调用Graphics.create(),那么我正在创建它,我应该处理它


但是当我调用Component.getGraphics()时会怎么样呢?这是创建一个我负责处理的新Graphics2D对象,还是返回一个我不应该修改的现有对象的引用?文档中没有说明这两种方式

只处理显式创建的图形对象。因此,在您的示例中,您不会对从Component.getGraphics()返回的对象调用dispose,除非其文档明确说明该对象是为您创建的。

真正让我困惑的是BuffereImage。它有一个名为createGraphics()的方法,其名称提示我需要调用dispose。但是它有另一个名为getGraphics()的方法,它返回与createGraphics()相同的结果,但没有说明谁拥有返回的值,这让我开始质疑谁拥有Component.getGraphics()返回的值。是的,我知道你的意思。在指示返回的资源时,Java实际上没有一个命名标准或约定,这需要调用者进行特殊处理。主要是因为自动GC为内存管理提供了太多的保护。当有疑问时,最好查阅Javadoc,有时甚至是代码。这并不能真正回答我的问题。那么getGraphics的结果是“为我创建的”吗?或者,根据上下文的不同,答案可能会有所不同?