隐藏父窗口

时间:2016-03-01 13:26:42

标签: java swing screenshot

我正在尝试(并实现)获取屏幕截图:

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获取桌面屏幕截图。

干杯!

1 个答案:

答案 0 :(得分:1)

如果您在按钮操作中,则在EDT内部调用(Event Dispatch Thread

如果你从那里打电话给setVisible(false),你必须等到你刚刚发送的这个事件已经被窗口处理过了 - 之前窗口仍然可见。

我建议您使用SwingUtilities.invokeLater()延迟屏幕截图,或者(如果发生得太早)延迟半秒启动Timer并在计时器触发后进行屏幕截图