


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Java 控制鼠標和鍵盤的方法ava SDK 1.3 以后實現(xiàn)了Robot 類。此類用于為測試自動化、自運行演示程序和其他需要控制鼠標和鍵盤的應用程序生成本機系統(tǒng)輸入事件。Robot 的主要目的是便于Java 平臺實現(xiàn)自動測試。使用該類生成輸入事件與將事件發(fā)送到AWT事件隊列或AWT組件的區(qū)別在于:事件是在平臺的本機輸入隊列中生成的。例如, Robot.mouseMove 將實際移動鼠標光標,而不是只生成鼠標移動事件。Robot 中主要的鼠標和鍵盤控制方法有:void keyPress(int keycode) 按下給定的鍵。 ? void keyRelease(int keycode) 釋放
2、給定的鍵。void mouseMove(int x, int y) 將鼠標指針移動到給定屏幕坐標。 ? void mousePress(int buttons) 按下一個或多個鼠標按鈕。 ? void mouseRelease(int buttons) 釋放一個或多個鼠標按鈕。 ?void mouseWheel(int wheelAmt)在配有滾輪的鼠標上旋轉滾輪。下面就讓我們來實戰(zhàn)鼠標控制,實現(xiàn)一個簡單的鼠標控制程序MouseController 。程序功能很簡單:隨機移動鼠標并點擊左鍵。代碼如下:import java.awt.AWTException; import java.awt.D
3、imension; import java.awt.Robot; import java.awt.Toolkit;import java.awt.event.InputEvent; import java.util.Random; /* */* author sxc 石新春 * Create date 2007-11-6 */ public class MouseController implements Runnable privateDimension dim; private Random rand; private Robot robot; private volatile boole
4、an stop = false; public MouseController() dim = Toolkit.getDefaultToolkit().getScreenSize(); rand =new Random();try robot = new Robot(); catch (AWTException ex)ex.printStackTrace();public void run() while(!stop) int x = rand.nextInt(dim.width);int y =rand.nextInt(dim.height);robot.mouseMove(x, y);ro
5、bot.mousePress(InputEvent.BUTTON1_MASK);try Thread.sleep(2000); catch (InterruptedException ex)ex.printStackTrace(); public synchronized void stop() stop = true;public static void main(String args) MouseController mc = new MouseController();ThreadmcThread = new Thread(mc);System.out.println("Mo
6、use Controller start");mcThread.start();try Thread.sleep(60000); catch (InterruptedException ex)ex.printStackTrace();mc.stop();System.out.println("Mouse Controller stoped"); 當然鍵盤映射也類似,無非是使用void keyPress(int keycode) ?,F(xiàn) 在實現(xiàn)了控制鼠標和鍵盤,接下了我們要獲取操作后的效果(屏幕截圖) 。好在 Robot 類也提供了一個方法:BufferedImage
7、createScreenCapture(Rectangle screenRect);可以直接將全屏幕或某個屏幕區(qū)域的像素拷貝到一個BufferedImage 對象中。好,下面實戰(zhàn)使用robot 截屏,實現(xiàn) Capture 程序,每隔5 秒截屏一次。rand = new Random();try robot = new Robot(); catch (AWTException ex)ex.printStackTrace();public void run() while(!stop) int x = rand.nextInt(dim.width);int y =rand.nextInt(dim.
8、height);robot.mouseMove(x, y);robot.mousePress(InputEvent.BUTTON1_MASK);try Thread.sleep(2000); catch (InterruptedException ex)ex.printStackTrace(); public synchronized void stop() stop = true;public static void main(String args) MouseController mc = new MouseController();mcThread = new Thread(mc);S
9、ystem.out.println("Mouse Controller start");mcThread.start();try Thread.sleep(60000); catch (InterruptedException ex)ex.printStackTrace();mc.stop();System.out.println("Mouse Controller stoped");當然鍵盤映射也類似,無非是使用void keyPress(intThreadkeycode)?,F(xiàn) 在實現(xiàn)了控制鼠標和鍵盤,接下了我們要獲取操作后的效果(屏幕截圖) 。好在
10、Robot 類也提供了一個方法: BufferedImagecreateScreenCapture(Rectangle screenRect);可以直接將全屏幕或某個屏幕區(qū)域的像素拷貝到一個好,下面實戰(zhàn)使用robot 截屏,實現(xiàn)BufferedImage 對象中。Capture 程序,每隔5 秒截屏一次。代碼如下:import java.awt.AWTException; import java.awt.Canvas; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; import
11、java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit;import java.awt.image.BufferedImage; importjavax.swing.GroupLayout; import javax.swing.JFrame;import javax.swing.WindowConstants;import javax.swing.GroupLayout.Alignment; /* */* author sxc 石新春 *Create date 2007-11-6 */ public class C
12、apture extends JFrame implements Runnable private Canvas screenCanvas;private volatile boolean stop;private Robot robot;private Dimension dim;public Capture()initComponents();try robot = new Robot(); catch (AWTException ex)ex.printStackTrace();dim = Toolkit.getDefaultToolkit().getScreenSize(); priva
13、te void initComponents() screenCanvas = new java.awt.Canvas();setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);stop = true;setResizable(false);GroupLayout layout = new GroupLayout(getContentPane();getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(Alignmen
14、t.LEADING).addCompon ent(screenCanvas,GroupLayout.PREFERRED_SIZE, 519,GroupLayout.PREFERRED_SIZE) ); layout.setVerticalGroup(layout.createParallelGroup(Alignment. LEADING).addComponent(screenCanvas,GroupLayout.PREFERRED_SIZE, 434,GroupLayout.PREFERRED_SIZE) ); pack(); public static void main(String
15、args) final Capturecapture = new Capture();EventQueue.invokeLater(newRunnable() public void run() capture.setVisible(true););cutThread.start(); public void run() stop = false;while(!stop) BufferedImage bImage = robot.createScreenCapture(newRectangle(dim.width, dim.height);Graphics g = this.screenCan
16、vas.getGraphics();g.drawImage(bImage, 0, 0, this);try Thread.sleep(5000); catch (InterruptedException ex)ex.printStackTrace();private synchronized void stop() stop = true;例子二:import java.awt.AWTException; import java.awt.Robot; import java.awt.event.KeyEvent; import java.io.IOException;public class RobotExp public static void main(String args) try tryRuntime.get
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆吉林省吉林市長春汽車經濟開發(fā)區(qū)第六中學高一化學第二學期期末聯(lián)考試題含解析
- 北京市首都師大附中2025年化學高二下期末檢測試題含解析
- 獸醫(yī)執(zhí)業(yè)注冊管理辦法
- 材料使用取貨管理辦法
- 出口專用標簽管理辦法
- 醫(yī)保藥房售賣管理辦法
- 學術質量評估
- 網絡教學系統(tǒng)設計與實施方案
- 江蘇徐州地名管理辦法
- 機型數(shù)量評審管理辦法
- 社會救助政策培訓
- DB3702-T 0009-2020 市民訴求數(shù)據(jù)分析與應用規(guī)范
- 坐大巴車安全教育
- 廣西建設職業(yè)技術學院博士高層次人才招考聘用高頻重點提升(共500題)附帶答案詳解
- 軍事訓練傷病預防
- 阿爾伯特;哈伯德-把信送給加西亞
- 2025中級消防設施操作員作業(yè)考試題及答案(1000題)
- 鐵路貨物運價規(guī)則
- 病房突發(fā)事件的應急與處理
- 光伏項目運維服務承包合同5篇
- 小學期末科學質量分析
評論
0/150
提交評論