我正在尝试(并实现)获取屏幕截图:
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获取桌面屏幕截图。
干杯!
答案 0 :(得分:1)
如果您在按钮操作中,则在EDT内部调用(Event Dispatch Thread)
如果你从那里打电话给setVisible(false)
,你必须等到你刚刚发送的这个事件已经被窗口处理过了 - 之前窗口仍然可见。
我建议您使用SwingUtilities.invokeLater()
延迟屏幕截图,或者(如果发生得太早)延迟半秒启动Timer
并在计时器触发后进行屏幕截图