原文:http://www.open-open.com/code/view/1420037709781

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, 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, 0, 0, iWidth, iHeight, 0, 0, scrImg.getWidth(),
scrImg.getHeight(), null);
}
} /**
* 画屏幕图像的方法
*/
public void drawScreen() {
Graphics g = this.getGraphics();
scrImg = scrCaptureUtil.captureScreen();// 抓屏,获取屏幕图像
if (scrImg != null) {
this.paintComponent(g);// 画图
}
g.dispose();// 释放资源
} }

Java屏幕截图工具 捕获屏幕的更多相关文章

  1. 用JAVA捕获屏幕、屏幕录像、播放

    http://blog.csdn.net/njchenyi/article/details/447554 用JAVA捕获屏幕.屏幕录像.播放 标签: javaexceptionimageimportn ...

  2. java 诊断工具——Arthas

    该说不说!小编做的这些功能,最讨厌的就是优化!某些前辈大佬写的代码小辈我实在不敢恭维!那逻辑!那sql! 接下来!今天的主角就登场了,阿里巴巴最近开源出来的一个针对 java 的工具,主要是针对 ja ...

  3. Java 正则表达式之捕获组

    Java 正则表达式之捕获组 1. Java 正则表达式基础 2. Java 正则表达式之捕获组 一.概述 1.1 什么是捕获组 捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显 ...

  4. Arthas Alibaba 开源 Java 诊断工具

    Arthas 用户文档 English Docs Arthas(阿尔萨斯) 能为你做什么? Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,A ...

  5. 8个超实用的Java测试工具和框架

    Java入门 如果你才刚开始接触Java世界,那么要做的第一件事情是,安装JDK——Java Development Kit(Java开发工具包),它自带有Java Runtime Environme ...

  6. 【转】高效Java编程工具集锦

    原文地址:http://geek.csdn.net/news/detail/57469 Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松.目前,市面上涌现出越来越多的高 ...

  7. Java开发工具安装步骤内容如下

    Java开发工具安装步骤内容如下 安装 开发工具 STS 链接下载网址 eclipse 链接下载网址 JDK安装 jdk链接下载地址 Marven环境 marven链接下载地址 Tomcat tomc ...

  8. JAVA开发工具eclipse中@author怎么改

    1:JAVA开发工具eclipse中@author怎么改,开发的时候为了注明版权信息. 用eclipse开发工具默认的是系统用户,那么怎么修改呢 示例如图所示 首先打开Eclipse--->然后 ...

  9. Java Properties工具类详解

    1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...

随机推荐

  1. 移动网页端HTML5 meta便签

    width = device-width:标识宽度是设备屏幕的宽度 initial-scale = 1.0 :标识初始的缩放比例 minimum-scale =0.5 :表示最小的缩放比例 maxim ...

  2. docker资源汇总

    https://github.com/hangyan/docker-resources/blob/master/README_zh.md   https://github.com/lightning- ...

  3. 欧拉函数φ(x)简要介绍及c++实现

    我还是很喜欢数论,从此吃喝不问,就此沉沦. 欧拉函数φ(x)的值为在[1,x)的区间内与x互质的数的个数 通式:    其中p1, p2……pn为x的所有质因数,x是不为0的整数.φ(1)=1. 注意 ...

  4. c++ 当输入的数据不符合数据类型时,清理输入流

    if (!cin) { cin.clear(); while (cin.get() != '\n') continue; cout << "Bad input; input pr ...

  5. 哪些 Python 库让你相见恨晚?

    知乎用户,A European Swallow. 苇叶.Aran He.jerry等人赞同 补充三个有助于自动化日常工作的: sh:sh 1.08 — sh v1.08 documentation可以 ...

  6. (48)zabbix报警媒介:自定义脚本Custom alertscripts

    自定义脚本媒介.zabbix会将信息传递给脚本,接下来你在脚本里面随意处理,一共会传递三个参数,按顺序接受也就是$1,$2,$3了,为了方便记忆,一般分别给他们赋值到To\Subject\body 配 ...

  7. OpenWrt 路由器如何让 lan 口主机获得 ipv6 网络访问 -- 知乎

    本文转自知乎: OpenWrt 路由器如何让 lan 口主机获得 ipv6 网络访问? - mistforest的回答 - 知乎https://www.zhihu.com/question/29667 ...

  8. tkinter学习-文本框

    阅读目录 Entry 输入框 Text 文本框 Entry: 说明:输入控件,用于显示简单的文本内容 属性:在输入框中用代码添加和删除内容,同样也是用insert()和delete()方法 from ...

  9. inotify+rsync sersync+rsync实时同步服务

    中小型网站搭建-数据实时的复制-inotify/sersync inotify是一种强大的,细粒度的.异步的文件系统事件监控机制(软件),linux内核从2.6.13起,加入inotify支持,通过i ...

  10. (总结)CentOS Linux使用crontab运行定时任务详解

    安装crontab:yum install crontabs 说明:/sbin/service crond start //启动服务/sbin/service crond stop //关闭服务/sb ...