Java 如何从JFrame屏幕截图中删除标题栏?

Java 如何从JFrame屏幕截图中删除标题栏?,java,swing,screenshot,jframe,Java,Swing,Screenshot,Jframe,我正在通过“双缓冲”方法拍摄JFrame的屏幕截图,如下所示: public BufferedImage getScreenshot() { java.awt.Dimension dim = this.getPreferredSize(); BufferedImage image = new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB); this

我正在通过“双缓冲”方法拍摄JFrame的屏幕截图,如下所示:

public BufferedImage getScreenshot() {      
  java.awt.Dimension dim = this.getPreferredSize();         
  BufferedImage image = new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB);            
  this.paint(image.getGraphics());      
  return image;     
}

其中
扩展了JFrame。我得到的图像在标题栏的顶部有一个空白条。在没有为标题栏分配额外空间的情况下,捕获JFrame内容图像的最直接方法是什么?

您应该能够使用该类。只需将框架的内容窗格(或根窗格,如果您有菜单)指定为您想要图像的组件


或者您的基本代码应该可以正常工作,只需将内容窗格(或根窗格)指定为要绘制的组件,而不是框架本身。

谢谢,选择内容窗格是关键(在我的例子中,它实际上是分层窗格,但这是项目特定的细节)。由于某些原因,我的原始代码不能处理窗格,但Screen Image类可以处理。@Greg Harman,默认情况下,分层窗格是非不透明的,因此图像的背景将是黑色的。ScreenImage类尝试基于父组件的背景为您绘制背景。