Java控制鼠標和鍵盤的方法_第1頁
Java控制鼠標和鍵盤的方法_第2頁
Java控制鼠標和鍵盤的方法_第3頁
免費預覽已結束,剩余5頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論