我正在尝试(并实现)获取屏幕截图:
robot = new Robot();
BufferedImage biScreen = robot.createScreenCapture(rectScreenSize);
ia.setImage(biScreen);
这很好用,但是这个操作是从 JPanel 内的 JButton 调用的。当我单击按钮时,在调用 ScreenCapture 类之前,我尝试使用以下方法隐藏 JPanel,但没有成功:
super.getTopLevelAncestor().setVisible(false);
super.getTopLevelAncestor().validate();
super.getTopLevelAncestor().revalidate();
super.getTopLevelAncestor().repaint();
ScreenCapture capture = new ScreenCapture("Screenshot's title", p); //create capture window with screenshot taken
如何在截屏之前隐藏我的 JPanel?目前,我正在获取桌面的屏幕截图,其中 JPanel 始终可见。
干杯!
最佳答案
如果您位于按钮操作内,则会在 EDT ( Event Dispatch Thread ) 内调用您
如果您从那里调用 setVisible(false)
,则必须等到窗口处理完您刚刚发送的事件 - 在此之前窗口仍然可见。
我建议您使用 SwingUtilities.invokeLater()
延迟屏幕截图,或者(如果发生得太早)启动一个延迟一半的 Timer
等一下,计时器启动后进行屏幕截图。
关于隐藏父窗口后拍摄的 Java 屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35724205/