加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java屏幕截图工具 捕获屏幕

发布时间:2020-12-15 00:11:49 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Rectangle;import j

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;

/**
 * 捕获屏幕,屏幕截图工具
 */
public class ScreenCaptureFrame extends JFrame implements ActionListener {

	private ScreenCaptureUtil scrCaptureUtil = null;// 捕获屏幕的工具类
	private PaintCanvas canvas = null;// 画布,用于画捕获到的屏幕图像

	public ScreenCaptureFrame() {
		super("Screen Capture");
		init();
	}

	/**
	 * 初始化
	 */
	private void init() {

		scrCaptureUtil = new ScreenCaptureUtil();// 创建抓屏工具
		canvas = new PaintCanvas(scrCaptureUtil);// 创建画布

		Container c = this.getContentPane();
		c.setLayout(new BorderLayout());
		c.add(canvas,BorderLayout.CENTER);

		JButton capButton = new JButton("抓 屏");
		c.add(capButton,BorderLayout.SOUTH);
		capButton.addActionListener(this);
		this.setSize(400,400);
		this.setVisible(true);
		this.setDefaultCloSEOperation(WindowConstants.EXIT_ON_CLOSE);
	}

	public void actionPerformed(ActionEvent e) {// 点击“抓屏”按钮时,在画布上画屏幕图像
		canvas.drawScreen();
	}

	public static void main(String[] args) {
		new ScreenCaptureFrame();
	}
}

/**
 * 抓屏工具类
 */
class ScreenCaptureUtil {
	private Robot robot = null;// 抓屏的主要工具类
	private Rectangle scrRect = null;// 屏幕的矩形图像

	public ScreenCaptureUtil() {
		try {
			robot = new Robot();// 创建一个抓屏工具
		} catch (Exception ex) {
			System.out.println(ex.toString());
		}
		// 获取屏幕的矩形图像
		Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
		scrRect = new Rectangle(0,scrSize.width,scrSize.height);
	}

	/**
	 * 抓屏方法
	 * 
	 * @return 返回一个图像
	 */
	public BufferedImage captureScreen() {
		BufferedImage scrImg = null;
		try {
			scrImg = robot.createScreenCapture(scrRect);// 抓的是全屏图
		} catch (Exception e) {
			System.out.println(e.toString());
		}
		return scrImg;
	}
}

/**
 * 画布类,用于显示抓屏得到的图像
 */
class PaintCanvas extends JPanel {
	private ScreenCaptureUtil scrCaptureUtil = null;// 抓屏工具
	private BufferedImage scrImg = null;// 待画的图像 

	public PaintCanvas(ScreenCaptureUtil screenUtil) {
		this.scrCaptureUtil = screenUtil;
	}

	/**
	 * 重载JPanel的paintComponent,用于画背景
	 */
	protected void paintComponent(Graphics g) {
		if (scrImg != null) {
			int iWidth = this.getWidth();
			int iHeight = this.getHeight();
			g.drawImage(scrImg,iWidth,iHeight,scrImg.getWidth(),scrImg.getHeight(),null);
		}
	}

	/**
	 * 画屏幕图像的方法
	 */
	public void drawScreen() {
		Graphics g = this.getGraphics();
		scrImg = scrCaptureUtil.captureScreen();// 抓屏,获取屏幕图像
		if (scrImg != null) {
			this.paintComponent(g);// 画图
		}
		g.dispose();// 释放资源
	}

}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读