java robot 控制 不用用户 界面_编写一个基于Java Robot类的屏幕捕获工具
Fun and Games(娛樂和游戲)提供了通過Java的Robot類捕獲主屏幕設(shè)備的功能,并且可以將整個屏幕或者選定的一部分保存為jpeg文件。這篇文章以Swing應(yīng)用的形式實(shí)現(xiàn)了屏幕捕獲工具。
Java Fun and Games(Java娛樂和游戲)提供了通過Java的Robot類捕獲主屏幕設(shè)備的功能,并且可以將整個屏幕或者選定的一部分保存為jpeg文件。
注意:現(xiàn)在你可以使用在線開發(fā)工具DevSquare編譯和運(yùn)行Java Fun and Games中提供的applet。DevSquare入門請閱讀資源中提供的用戶向?qū)А?/p>
java.awt.Robot類為娛樂功能提供了一些有用的方法。其中一個包括了建立屏幕捕獲工具的功能。Java Fun and Games給出了一個使用Robot捕獲主屏幕設(shè)備內(nèi)容的工具。
這一部分從我以前的幾部分中分離出來了,因?yàn)樗⒉皇羌性赼pplet實(shí)現(xiàn)上。這篇文章以Swing應(yīng)用的形式實(shí)現(xiàn)了屏幕捕獲工具。從GUI觀點(diǎn)介紹完這個應(yīng)用之后,我將解釋實(shí)現(xiàn)的關(guān)鍵部分。
版權(quán)聲明:任何獲得Matrix授權(quán)的網(wǎng)站,轉(zhuǎn)載時請務(wù)必保留以下作者信息和鏈接
作者:Jeff Friesen;mydeman
原文:
Matrix:
關(guān)鍵字:Java Robot;捕獲屏幕
應(yīng)用程序GUI
我的Capture程序提供了一個圖形用戶界面(GUI,Graphic User Interface),通過它你可以選擇捕獲圖像的一部分,修剪圖像到選擇內(nèi)容,以及將結(jié)果圖像保存為jpeg文件。圖1顯示了包含一個捕獲示例的Capture的GUI。
圖 1. 紅白相間的虛線所形成的矩形表示了當(dāng)前選中的區(qū)域
Capture的GUI由菜單欄和顯示捕獲圖像的可滾動窗口組成。如圖1所示,選擇矩形(通過拖拽鼠標(biāo))表示了捕獲圖形的一個矩形區(qū)域。
菜單欄提供了File和Capture菜單:
---File提供Save As…(另存為)和Exit(退出)菜單項(xiàng),可以通過文件選擇器保存當(dāng)前捕獲為一個jpeg文件,和退出Capture。盡管你可以直接選擇這些菜單項(xiàng),但是你會發(fā)現(xiàn)使用它們的快捷鍵Alt-S和Alt-X會更加方便。
---Capture提供Capture(捕獲)和Crop(修剪)菜單項(xiàng),可以捕獲當(dāng)前主屏幕設(shè)備的內(nèi)容和修剪一個圖像為選擇矩形的內(nèi)容。和File菜單項(xiàng)一樣,這些菜單項(xiàng)也有它們自己的方便的快捷鍵:Capture(Alt-C)和Crop(Alt-K)。
應(yīng)用實(shí)現(xiàn)
有三個源文件來描述Capture的GUI:Capture.java(啟動應(yīng)用程序和構(gòu)造GUI)、ImageArea.java( 描述了一個用來顯示捕獲的內(nèi)容的組件,你也可以在其中選擇捕獲的一部分或修剪捕獲的內(nèi)容)和ImageFileFilter.java(限制文件選擇器的選擇是文件夾和jpeg文件)。在這一部分下面,我從這些源文件中摘錄了一些代碼片斷來說明Capture的工作過程。
機(jī)器人屏幕捕獲
為了使用Robot類捕獲屏幕,Capture必須先創(chuàng)建一個Robot對象。Capture類的public static void main(String [] args)方法嘗試調(diào)用Robot的public Robot()構(gòu)造函數(shù)來創(chuàng)建這個對象。如果創(chuàng)建成功,就會返回一個針對主屏幕設(shè)備坐標(biāo)系的Robot引用。如果平臺不支持低級控制(在沒有屏幕設(shè)備的環(huán)境這是成立的),將會拋出java.awt.AWTException。如果平臺不允許創(chuàng)建Robot對象就會拋出java.lang.SecurityException。但愿你不會再遇到其他異常。
假設(shè)Robot對象已被創(chuàng)建,main()調(diào)用Capture類的構(gòu)造函數(shù)創(chuàng)建一個GUI。作為GUI創(chuàng)建的一部分,Capture通過調(diào)用dimScreenSize = Toolkit.getDefaultToolkit().getScreenSize();獲得主屏幕設(shè)備的尺寸。因?yàn)橛脕盹@示屏幕捕獲的內(nèi)容的Robot的public BufferedImage createScreenCapture(Rectangle screenRect)方法,需要一個java.awt.Rectangle參數(shù),所以構(gòu)造函數(shù)通過rectScreenSize = new Rectangle(dimScreenSize);將java.awt.Dimension對象轉(zhuǎn)換為一個Rectangle對象。當(dāng)Capture菜單項(xiàng)的動作監(jiān)聽器被調(diào)用時,下面摘錄的Capture.java片斷就會調(diào)用createScreenCapture()。// Hide Capture's main window so that it does not appear in
// the screen capture.
setVisible (false);
// Perform the screen capture.
BufferedImage biScreen;
biScreen = robot.createScreenCapture (rectScreenSize);
// Show Capture's main window for continued user interaction.
setVisible (true);
// Update ImageArea component with the new image and adjust
// the scrollbars.
ia.setImage (biScreen);
jsp.getHorizontalScrollBar ().setValue (0);
jsp.getVerticalScrollBar ().setValue (0);
你不希望Capture的GUI遮住你想要捕獲的任何內(nèi)容。這就是為什么代碼中隱藏Capture GUI優(yōu)先級高于完成捕獲。在獲取了包含屏幕像素copy的java.awt.image.BufferedImage后,代碼片斷顯示出GUI,并且通過圖像區(qū)域組件顯示出BufferedImage的內(nèi)容。
[1]
【責(zé)編:Peng】
--------------------next---------------------
總結(jié)
以上是生活随笔為你收集整理的java robot 控制 不用用户 界面_编写一个基于Java Robot类的屏幕捕获工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ros系统支持java_创建一个rosj
- 下一篇: ssm 退出登录 java_【Java】