java Fun and Games(Java娛樂和游戲)提供了通過Java的Robot類捕捉主屏幕設(shè)備的功能,并且可以將整個(gè)屏幕或者選定的一部分保存為jpeg文件。這篇文章以Swing應(yīng)用的形式實(shí)現(xiàn)了屏幕捕捉工具。
    Java Fun and Games(Java娛樂和游戲)提供了通過Java的Robot類捕捉主屏幕設(shè)備的功能,并且可以將整個(gè)屏幕或者選定的一部分保存為jpeg文件。
    注重:現(xiàn)在你可以使用在線開發(fā)工具DevSquare編譯和運(yùn)行Java Fun and Games中提供的applet。DevSquare入門請(qǐng)閱讀資源中提供的用戶向?qū)А?br />
    java.awt.Robot類為娛樂功能提供了一些有用的方法。其中一個(gè)包括了建立屏幕捕捉工具的功能。Java Fun and Games給出了一個(gè)使用Robot捕捉主屏幕設(shè)備內(nèi)容的工具。
    這一部分從我以前的幾部分中分離出來了,因?yàn)樗⒉皇羌性赼pplet實(shí)現(xiàn)上。這篇文章以Swing應(yīng)用的形式實(shí)現(xiàn)了屏幕捕捉工具。從GUI觀點(diǎn)介紹完這個(gè)應(yīng)用之后,我將解釋實(shí)現(xiàn)的要害部分。
版權(quán)聲明:任何獲得Matrix授權(quán)的網(wǎng)站,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必保留以下作者信息和鏈接
作者:Jeff Friesen;mydeman
原文:http://www.javaworld.com/javaworld/jw-04-2006/jw-0424-funandgames.Html
Matrix:http://www.matrix.org.cn/resource/article/2006-09-15/Java+Robot_f9598e5e-445b-11db-af0b-0f766c077b58.html
要害字:Java Robot;捕捉屏幕
應(yīng)用程序GUI
    我的Capture程序提供了一個(gè)圖形用戶界面(GUI,Graphic User Interface),通過它你可以選擇捕捉圖像的一部分,修剪圖像到選擇內(nèi)容,以及將結(jié)果圖像保存為jpeg文件。圖1顯示了包含一個(gè)捕捉示例的Capture的GUI。
圖 1. 紅白相間的虛線所形成的矩形表示了當(dāng)前選中的區(qū)域
    Capture的GUI由菜單欄和顯示捕捉圖像的可滾動(dòng)窗口組成。如圖1所示,選擇矩形(通過拖拽鼠標(biāo))表示了捕捉圖形的一個(gè)矩形區(qū)域。
    菜單欄提供了File和Capture菜單:
---File提供Save As…(另存為)和Exit(退出)菜單項(xiàng),可以通過文件選擇器保存當(dāng)前捕捉為一個(gè)jpeg文件,和退出Capture。盡管你可以直接選擇這些菜單項(xiàng),但是你會(huì)發(fā)現(xiàn)使用它們的快捷鍵Alt-S和Alt-X會(huì)更加方便。
---Capture提供Capture(捕捉)和Crop(修剪)菜單項(xiàng),可以捕捉當(dāng)前主屏幕設(shè)備的內(nèi)容和修剪一個(gè)圖像為選擇矩形的內(nèi)容。和File菜單項(xiàng)一樣,這些菜單項(xiàng)也有它們自己的方便的快捷鍵:Capture(Alt-C)和Crop(Alt-K)。
應(yīng)用實(shí)現(xiàn)
    有三個(gè)源文件來描述Capture的GUI:Capture.java(啟動(dòng)應(yīng)用程序和構(gòu)造GUI)、ImageArea.java( 描述了一個(gè)用來顯示捕捉的內(nèi)容的組件,你也可以在其中選擇捕捉的一部分或修剪捕捉的內(nèi)容)和ImageFileFilter.java(限制文件選擇器的選擇是文件夾和jpeg文件)。在這一部分下面,我從這些源文件中摘錄了一些代碼片斷來說明Capture的工作過程。
機(jī)器人屏幕捕捉
    為了使用Robot類捕捉屏幕,Capture必須先創(chuàng)建一個(gè)Robot對(duì)象。Capture類的public static void main(String [] args)方法嘗試調(diào)用Robot的public Robot()構(gòu)造函數(shù)來創(chuàng)建這個(gè)對(duì)象。假如創(chuàng)建成功,就會(huì)返回一個(gè)針對(duì)主屏幕設(shè)備坐標(biāo)系的Robot引用。假如平臺(tái)不支持低級(jí)控制(在沒有屏幕設(shè)備的環(huán)境這是成立的),將會(huì)拋出java.awt.AWTException。假如平臺(tái)不答應(yīng)創(chuàng)建Robot對(duì)象就會(huì)拋出java.lang.SecurityException。但愿你不會(huì)再碰到其他異常。
    假設(shè)Robot對(duì)象已被創(chuàng)建,main()調(diào)用Capture類的構(gòu)造函數(shù)創(chuàng)建一個(gè)GUI。作為GUI創(chuàng)建的一部分,Capture通過調(diào)用dimScreenSize = Toolkit.getDefaultToolkit().getScreenSize();獲得主屏幕設(shè)備的尺寸。因?yàn)橛脕盹@示屏幕捕捉的內(nèi)容的Robot的public BufferedImage createScreenCapture(Rectangle screenRect)方法,需要一個(gè)java.awt.Rectangle參數(shù),所以構(gòu)造函數(shù)通過rectScreenSize = new Rectangle(dimScreenSize);將java.awt.Dimension對(duì)象轉(zhuǎn)換為一個(gè)Rectangle對(duì)象。當(dāng)Capture菜單項(xiàng)的動(dòng)作監(jiān)聽器被調(diào)用時(shí),下面摘錄的Capture.java片斷就會(huì)調(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);
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注