Java實(shí)現(xiàn)鼠標(biāo)模擬與鍵盤映射
本文實(shí)例為大家分享了Java實(shí)現(xiàn)鼠標(biāo)模擬與鍵盤映射的具體代碼,供大家參考,具體內(nèi)容如下
關(guān)鍵字: java 鼠標(biāo)模擬 鍵盤映射
Java SDK 1.3以后實(shí)現(xiàn)了Robot類。此類用于為測(cè)試自動(dòng)化、自運(yùn)行演示程序和其他需要控制鼠標(biāo)和鍵盤的應(yīng)用程序生成本機(jī)系統(tǒng)輸入事件。Robot 的主要目的是便于 Java 平臺(tái)實(shí)現(xiàn)自動(dòng)測(cè)試。
使用該類生成輸入事件與將事件發(fā)送到 AWT 事件隊(duì)列或 AWT 組件的區(qū)別在于:事件是在平臺(tái)的本機(jī)輸入隊(duì)列中生成的。例如,Robot.mouseMove 將實(shí)際移動(dòng)鼠標(biāo)光標(biāo),而不是只生成鼠標(biāo)移動(dòng)事件。
Robot中主要的鼠標(biāo)和鍵盤控制方法有:
• void keyPress(int keycode) 按下給定的鍵。
• void keyRelease(int keycode) 釋放給定的鍵。
• void mouseMove(int x, int y) 將鼠標(biāo)指針移動(dòng)到給定屏幕坐標(biāo)。
• void mousePress(int buttons) 按下一個(gè)或多個(gè)鼠標(biāo)按鈕。
• void mouseRelease(int buttons) 釋放一個(gè)或多個(gè)鼠標(biāo)按鈕。
• void mouseWheel(int wheelAmt) 在配有滾輪的鼠標(biāo)上旋轉(zhuǎn)滾輪。
下面就讓我們來實(shí)戰(zhàn)鼠標(biāo)控制,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的鼠標(biāo)控制程序MouseController。程序功能很簡(jiǎn)單:隨機(jī)移動(dòng)鼠標(biāo)并點(diǎn)擊左鍵
package robot; import java.awt.AWTException; import java.awt.Dimension; import java.awt.Robot; import java.awt.Toolkit; import java.awt.event.InputEvent; import java.util.Random; public class MourseControl implements Runnable{ private Dimension dim; private Random rand; private Robot robot; private volatile boolean stop = false; public MourseControl() { // dim = Toolkit.getDefaultToolkit().getScreenSize(); rand = new Random(); try { robot = new Robot(); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub MourseControl m = new MourseControl(); Thread t = new Thread(m); t.start(); System.out.println("MourseControl start..."); try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } m.stop(); System.out.println("MourseControl stop..."); } public void run() { // TODO Auto-generated method stub while(!stop) { int x = rand.nextInt(dim.width); int y = rand.nextInt(dim.height); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } robot.mouseMove(x, y); System.out.println("move to :x="+x+",y="+y); robot.mousePress(InputEvent.BUTTON1_MASK); } } public synchronized void stop() { stop = true; } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java?Chassis3熔斷機(jī)制的改進(jìn)路程技術(shù)解密
這篇文章主要介紹了Java?Chassis?3技術(shù)解密之熔斷機(jī)制的改進(jìn)路程實(shí)例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Spring 源碼解析CommonAnnotationBeanPostProcessor
這篇文章主要為大家介紹了Spring 源碼解析CommonAnnotationBeanPostProcessor示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10MyBatis實(shí)現(xiàn)動(dòng)態(tài)SQL的方法
動(dòng)態(tài)SQL是MyBatis強(qiáng)大特性之一,極大的簡(jiǎn)化我們拼裝SQL的操作,本文主要介紹了MyBatis實(shí)現(xiàn)動(dòng)態(tài)SQL的方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06通過實(shí)例學(xué)習(xí)Spring @Required注釋原理
這篇文章主要介紹了通過實(shí)例學(xué)習(xí)Spring @Required注釋原理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03java結(jié)合keytool如何實(shí)現(xiàn)非對(duì)稱簽名和驗(yàn)證詳解
這篇文章主要給大家介紹了關(guān)于java結(jié)合keytool如何實(shí)現(xiàn)非對(duì)稱簽名和驗(yàn)證的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08