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