Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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 在JPanel中重置图形_Java_Swing_Jpanel_Graphics2d - Fatal编程技术网

Java 在JPanel中重置图形

Java 在JPanel中重置图形,java,swing,jpanel,graphics2d,Java,Swing,Jpanel,Graphics2d,下面的代码绘制了一个分子的结构。如果我不通过一个分子,最后一个结构会继续出现在JPanel中。当没有分子时,如何将其重置为空白画布。换句话说,我应该在drawMolecule()方法的else{}中放置什么?您可以在else中创建一个新的BuffereImage,或者您可以获取BuffereImage的Graphics2D组件,通过设置背景色(颜色c)然后通过clearRect(…)清除图像然后通过其dispose()方法处理Graphics2D对象 事实上,在检查代码时,我没有看到您这样做。使

下面的代码绘制了一个分子的结构。如果我不通过一个分子,最后一个结构会继续出现在JPanel中。当没有分子时,如何将其重置为空白画布。换句话说,我应该在drawMolecule()方法的else{}中放置什么?

您可以在else中创建一个新的BuffereImage,或者您可以获取BuffereImage的Graphics2D组件,通过
设置背景色(颜色c)
然后通过
clearRect(…)清除图像
然后通过其
dispose()
方法处理Graphics2D对象


事实上,在检查代码时,我没有看到您这样做。使用完图形或Graphics2D资源后,如果您自己创建了图形或Graphics2D资源(如果是从JVM获得的,比如通过其paint或paintComponent方法),请不要忘记处置它们。

我尝试了dispose()和clearRect()。。没用!我还尝试移动Graphics2D g2=(Graphics2D)image.getGraphics();g2.设置颜色(颜色为白色);g2.fillRect(0,0,w,h);从第二个if块中。。没什么@lochi:“不起作用”告诉我们的很少。将您的新代码和任何错误消息或错误行为信息显示为对原始帖子的编辑,然后请将我标记回来。我怀疑这与您的问题有关,但您在super.paintComponents(g)中有一个拼写错误。去掉“s”,它应该是超级油漆组件(g);