2016-03-01 56 views
1

我想(和实现)后采取的Java截图:获得的截图与hidding父窗口

robot = new Robot(); 
BufferedImage biScreen = robot.createScreenCapture(rectScreenSize); 
ia.setImage(biScreen); 

这个伟大的工程,但这个动作是从一个JPanel里面一个JButton调用。当我按一下按钮,打电话给我的抓屏上课前,我试着用这些来掩饰没有成功的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

你的JButton是如何添加到你的JPanel的? – NAIT

回答

1

如果你是一个按钮动作里面,你调用EDT里面(Event Dispatch Thread

如果你从那里打电话setVisible(false),你将不得不等待,直到你刚发此事件已被处理通过窗口 - 在窗口仍然可见之前。

我建议你用SwingUtilities.invokeLater()延迟屏幕截图或者(如果这种情况发生的太早)延迟半秒钟开始Timer并在定时器启动后做屏幕截图。

+0

谢谢,Jan!我觉得这就是! :-)我正在使用invokeLater()来解决这个问题。 – OinkEsFabuloso