AWT机器人类Robot,实现屏幕的"拍照"
很多时候,我们希望能为我们的JAVA程序实现自动测试,自动演示功能,或者是其它的一些鼠标和键盘控制的应用。出于这样的目的,自从JDK1.3开始,它就为我们提供了一个用来产生本机输入事件的机器人类--java.awt.Robot.
下面我们来看看Robot为我们提供了哪些功能。
BufferedImage createScreenCapture(Rectangle screenRect)createScreenCapture方法提供类似于键盘上的PrintScreen键的功能,将指定矩形区域内的屏幕像素copy下来产生一个BufferedImage。我们可以将这个方法用在图形程序中,或是用它来实现远端屏幕传输,可做成远端电脑监控程序等.(在该实例中就用的是这个方法)
void delay(int ms)用来将当前的程序(thread)休眠(sleep)若干毫秒(ms)。可用来控制程序的延时。
Color getPixelColor(int x, int y)取得给定屏幕坐标像素位置的颜色值.用处就不多说了.
void keyPress(int keycode)
void keyRelease(int keycode)
这两个方法的作用一看便知,用来产生指定键的按键按下与抬起动作,相当于Win32 API的keyb_event函数.可用于程序的自动演示、测试等.
void mouseMove(int x, int y)将鼠标光标移动到指定的屏幕坐标.可用于程序的自动演示、测试等.
void mousePress(int buttons)
void mouseRelease(int buttons)
void mouseWheel(int wheelAmt)
上面的三种方法,产生指定鼠标按钮的按下,抬起,及滚轮动作.一样也可用于程序的自动演示、测试等.
以上介绍了Robot提供的实用的键盘鼠标控制功能,要了解更多Robot的方法,请查阅JDK文档java.awt.Robot.下面是完整的源代码,可以直接运行。
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
/*******************************************************************
*该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照"
*ThisJavaBeanisusedtosnapshottheGUIina
*Javaapplication!Youcanembeded
*itintoyourjavaapplicationsourcecode,andus
*ittosnapshottherightGUIoftheapplication
*@seejavax.ImageIO
*@authorliluqun([email]liluqun@263.net[/email])
*@version1.0
*
*****************************************************/
publicclass
GuiCamera {
private String fileName; //文件名,但没有包括扩展名
private String defaultName = "GuiCamera";
staticintserialNum = 0;
private String imageFormat; //图像文件的格式
private String defaultImageFormat = "png";
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
/****************************************************************
*默认的文件前缀为GuiCamera,文件格式为PNG格式
*Thedefaultconstructwillusethedefault
*Imagefilesurname"GuiCamera",
*anddefaultimageformat"png"
****************************************************************/
public GuiCamera() {
fileName = defaultName;
imageFormat = defaultImageFormat;
}
/****************************************************************
*@paramsthesurnameofthesnapshotfile
*@paramformattheformatoftheimagefile,
*itcanbe"jpg"or"png"
*本构造支持JPG和PNG文件的存储
****************************************************************/
public GuiCamera(String s, String format) {
fileName = s;
imageFormat = format;
}
/****************************************************************
*对屏幕进行拍照
*snapShottheGuionce
****************************************************************/
publicvoid snapShot() {
try {
//拷贝屏幕到一个BufferedImage对象screenshot
BufferedImage screenshot =
(new Robot()).createScreenCapture(new Rectangle(0, 0,
(int)d.getWidth(),
(int)d.getHeight()));
serialNum++;
//根据文件前缀变量和文件格式变量,自动生成文件名
String name =
fileName + String.valueOf(serialNum) + "." + imageFormat;
File f = new File(name);
System.out.print("Save File " + name);
//将screenshot对象写入图像文件
ImageIO.write(screenshot, imageFormat, f);
System.out.print("..Finished!\n");
} catch (Exception ex) {
System.out.println(ex);
}
}
publicstaticvoid main(String[] args) {
GuiCamera cam = new GuiCamera("d:\\Hello", "png"); //
cam.snapShot();
}
}
(注:解释及源代码,都是来自互联网,我只是综合了一下,感谢原作者。)
分享到:
相关推荐
基于 Saurabh Kumar 这个优秀的屏幕截图脚本: http : //www.mathworks.com/matlabcentral/fileexchange/11363-screencapture 添加了一个函数包装器以使其更方便,还添加了能够捕获子区域而不是全屏的选项,并且...
Java中利用Robot实现模拟按键,按下和松开。
在Windows操作系统下,通常这类功能由C++或Visual Basic等语言实现,但Java 1.4引入的`Robot`类使得Java程序员也能轻松地实现屏幕截取。 **1. Robot类的基本概念** `Robot`类位于`java.awt`包中,它提供了一种方式...
"基于MiniGUI的Java AWT包的移植实现" 本文主要介绍了基于MiniGUI的Java AWT包的移植实现,旨在使嵌入式Java平台支持完整的Java类库。文章首先介绍了MiniGUI的选择理由,然后详细介绍了移植AWT包的设计方案和实现...
首先,我们要理解Java中实现屏幕监控的关键技术。这通常涉及到Java的图形用户界面(GUI)组件和图像处理库。Java提供了丰富的API,如Java AWT(Abstract Window Toolkit)和Swing,用于创建和操作图形界面。对于屏幕...
"AWT变换(可实现任意层数分解与重构)" 指的是离散阿弗瓦变换(Adaptive Wavelet Transform,AWT),它是一种自适应的多分辨率分析方法,允许对信号进行任意层数的分解和重构。在图像处理和信号分析领域,这种特性...
本项目“用AWT包实现的JAVA计算器”旨在通过AWT来构建一个功能完备的计算器应用。下面将详细介绍这个项目中的关键知识点。 1. **AWT组件**: - AWT提供了各种基本组件,如按钮(Button)、文本字段(TextField)、...
该程序显示了 MATLAB.Mouse 中 java.awt.Robot 类的用法,随机改变屏幕上的位置,并同时为您提供鼠标所在的 rgb 值。 为了运行 Matlab_JavaAWRobot_Project.m 你必须下载我提交的 getRobotClass.m 和 JavaRobotClass...
`Matlab_JavaAWT_Robot_Project`是一个具体的例子,展示了如何在Matlab中利用Java的`Robot`类来实现这些功能。 1. **Java AWT Robot类**: `java.awt.Robot`是Java AWT(Abstract Window Toolkit)库的一部分,它...
通过以上两个示例可以看出,Java中实现屏幕取色相对简单,主要依赖于`Robot`类提供的API。无论是简单的控制台输出还是复杂的GUI应用,都可以通过上述方法轻松实现。在实际应用中,还可以根据具体需求进行扩展和优化...
在Java编程环境中,实现屏幕截图是一项实用的技术,广泛应用于各种应用场景,如屏幕录像、远程控制、游戏辅助等。本文将详细讲解如何使用Java来完成这一功能,并基于提供的`screenChort.java`源代码进行解析。 首先...
在Java编程语言中,实现屏幕截图是一项常见的任务,尤其在自动化测试、远程桌面协作或创建教学软件时。本文将深入探讨如何使用Java实现这一功能,同时提供相关代码示例。 首先,我们需要理解Java中用于图形界面操作...
在Java编程语言中,`java.awt.Robot`类是一个强大的工具,它允许程序模拟用户的键盘输入和鼠标操作。这个功能在自动化测试、脚本编写、甚至是游戏辅助等场景中非常有用。下面我们将深入探讨`Robot`类的工作原理、...
在Java编程语言中,`java.awt.Robot`类是一个强大的工具,它允许程序模拟用户的键盘和鼠标输入。这个`RobotUtil`是基于`Robot`类的进一步封装,目的是简化和优化自动化测试、屏幕抓取或者任何需要模拟用户交互场景的...
网络 上 存 在的大量的Java程序都需要Java虚拟机提供...制的基础上,着重讨论了在嵌入式系统中实现AWT技术的过程。并且在实现AWT技术的 基础上,讨论了如何根据J2ME规范来进行AWT类库的构建。 是一篇很好的学习论文。
Java 实现屏幕取色涉及到对操作系统...总结来说,Java实现屏幕取色主要依赖于`Robot`类来获取屏幕像素颜色,并结合GUI组件和事件监听器来实时显示所选颜色。通过多线程处理,可以实现颜色的动态更新,提升用户体验。
AWT是Java的基础类库中的一个部分,它使用本地方法调用本地图形库实现图形界面,因此它依赖于特定平台的实现。AWT提供了窗口、按钮、文本框等基本的GUI组件,以及事件处理机制。由于其依赖于底层的本地系统,因此在...
在Java中,实现屏幕抓图主要依赖于`java.awt.Robot`类,它提供了屏幕捕获的功能。通过创建`Robot`实例,可以获取整个屏幕或指定区域的图像。此功能广泛应用于自动化测试、屏幕录制工具和各种需要捕捉屏幕画面的应用...
这里我们将深入探讨Java实现屏幕拍照的一些关键知识点。 1. **Java AWT和Swing库**: Java AWT(Abstract Window Toolkit)和Swing是Java提供的两个用于创建图形用户界面(GUI)的库。在这个屏幕拍照程序中,可能...
在Java中,要实现屏幕抓图的功能,主要依赖于`java.awt.Robot`类。该类提供了一系列方法来模拟键盘和鼠标操作,并允许开发人员捕获整个屏幕或屏幕的一部分。 ##### 1. `java.awt.Robot`类简介 `java.awt.Robot`是...