Java實(shí)現(xiàn)鼠標(biāo)模擬與鍵盤(pán)映射
本文實(shí)例為大家分享了Java實(shí)現(xiàn)鼠標(biāo)模擬與鍵盤(pán)映射的具體代碼,供大家參考,具體內(nèi)容如下
關(guān)鍵字: java 鼠標(biāo)模擬 鍵盤(pán)映射
Java SDK 1.3以后實(shí)現(xiàn)了Robot類(lèi)。此類(lèi)用于為測(cè)試自動(dòng)化、自運(yùn)行演示程序和其他需要控制鼠標(biāo)和鍵盤(pán)的應(yīng)用程序生成本機(jī)系統(tǒng)輸入事件。Robot 的主要目的是便于 Java 平臺(tái)實(shí)現(xiàn)自動(dòng)測(cè)試。
使用該類(lèi)生成輸入事件與將事件發(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)和鍵盤(pán)控制方法有:
• 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)滾輪。
下面就讓我們來(lái)實(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)文章
mybatisplus報(bào)錯(cuò):Invalid bound statement(not fou
文章主要介紹了在使用MyBatis-Plus時(shí)遇到的`Invalid bound statement (not found)`錯(cuò)誤的幾種常見(jiàn)原因和解決方法,包括namespace路徑不一致、函數(shù)名或標(biāo)簽id不一致、構(gòu)建未成功、掃包配置錯(cuò)誤以及配置文件書(shū)寫(xiě)錯(cuò)誤2025-02-02
maven多profile 打包下 -P參和-D參數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了maven多profile 打包下 -P參和-D參數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
spring事務(wù)里面開(kāi)啟線程插入報(bào)錯(cuò)了是否會(huì)回滾
這篇文章主要介紹了spring事務(wù)里面開(kāi)啟線程插入,報(bào)錯(cuò)了是否會(huì)回滾?這是小編遇到一道面試題,題目大概是這個(gè)樣子,今天抽空通過(guò)示例代碼給大家分析下,需要的朋友可以參考下2023-04-04
使用Idea簡(jiǎn)單快速搭建springcloud項(xiàng)目的圖文教程
這篇文章主要介紹了使用Idea簡(jiǎn)單快速搭建springcloud項(xiàng)目,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
Java 對(duì) Properties 文件的操作詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了Java 對(duì) Properties 文件的操作詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-02-02
Spring Boot Admin Server管理客戶(hù)端過(guò)程詳解
這篇文章主要介紹了Spring Boot Admin Server管理客戶(hù)端過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03

