gpt4 book ai didi

java - 屏幕截图问题 - 不包括自己的应用程序。从屏幕截图

转载 作者:行者123 更新时间:2023-11-30 06:35:37 27 4
gpt4 key购买 nike

我有一个小问题,我真的不知道如何解决,基本上我想截取我桌面的屏幕截图(使用“Robot”类),不包括实际的程序 GUI 组件。本来我认为这可以通过暂时隐藏组件来完成,但每次制作新的屏幕截图时,组件都包含在图像中。

这是截屏按钮的 actionPerformed 方法中包含的 block :

if (command.equals("zoom")) {
setComponentVisability(false);//try to hide the components from the robot
zt.screenShoot();//take the screenshot
setComponentVisability(true);//show the components
}

“zt.screenShoot”获取屏幕截图并将其返回到新的 JFrame(用于调试)中,在我的主框架中我使用

com.sun.awt.AWTUtilities.setWindowOpaque(systemWindow, false);

使背景透明的方法;不确定这是否与此问题有关。

任何帮助都会很棒,谢谢

最佳答案

在隐藏组件和截屏之间使用短暂的延迟。

例如测试截图.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

class TestScreenshot {

static JLabel screenshot;

public static void main(String[] args) throws Exception {
final Robot robot = new Robot();
SwingUtilities.invokeLater( new Runnable() {
public void run() {
final JFrame f = new JFrame("Screenshot");

JPanel gui = new JPanel(new BorderLayout(3,3));

gui.setBorder(new EmptyBorder(5,5,5,5));

f.setContentPane(gui);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

screenshot = new JLabel();
JScrollPane scroll = new JScrollPane(screenshot);
scroll.setPreferredSize(new Dimension(800,600));
gui.add(scroll, BorderLayout.CENTER);

final ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
Rectangle screenSize = new Rectangle(
Toolkit.getDefaultToolkit().getScreenSize());
Image image = robot.createScreenCapture(screenSize);
setImage(image);
f.setVisible(true);
}
};

JButton grabScreen = new JButton("Grab Screen");
grabScreen.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent ae) {
f.setVisible(false);
Timer timer = new Timer(400, al);
timer.setRepeats(false);
timer.start();
}
} );
gui.add(grabScreen, BorderLayout.SOUTH);

f.pack();
f.setLocationByPlatform(true);
f.setVisible(true);
}
});
}

public static void setImage(Image image) {
screenshot.setIcon(new ImageIcon(image));
}
}

关于java - 屏幕截图问题 - 不包括自己的应用程序。从屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5898910/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com