我实现了一个屏幕抓取器。当屏幕抓取JFrame关闭时,它刚才覆盖的屏幕部分将被抓取(捕获)。这在使用Oracle的标准Java的Windows中工作得很好。
private void closeButtonPerformed() {
Rectangle r = getBounds();
setVisible(false);
dispose();
percept.grab_screen(r); // grab_screen(r) is in main program class
} 因此,当按下关闭按钮时,JFrame的最后一个位置将传递给采集器。getBounds()需要在JFrame可见时执行。然后,需要将JFrame从屏幕上移除,以便抓取器可以捕获下面的桌面。
同样的代码在使用OpenJDK的Linux中不起作用,其结果是抓取器捕获定义抓取区的瞬态JFrame的内容。
发布于 2014-04-03 05:43:27
我发现,在percept.grab_screen(R)方法中,处理抓取窗口的setVisible(False)(如原始问题所述)要好一点。
透明窗口捕获屏幕内容,但使薄边可见。在Windows中情况并非如此。
https://stackoverflow.com/questions/22407855
复制相似问题