「java鼠标模组」java模拟鼠标键盘

博主:adminadmin 2022-12-24 03:06:11 62

本篇文章给大家谈谈java鼠标模组,以及java模拟鼠标键盘对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 鼠标事件

mouseEntered()是鼠标刚进入组件的时候调用(只调用一次)

mouseMoved()是鼠标在组件上移动的时候调用(只要鼠标没有离开组件,一直调用)

还不明白的话发信息给我,我给你代码。370387501@qq.com

如何用JAVA编一个 鼠标在在屏幕上移动的 并点击的 程序?

楼主提问的水平很高啊,题目的要求都没有,如何回答。。。

相关类都在

import java.awt.*;

import javax.swing.* ;

动作事件相关类在import java.awt.event.*;中,在代码头import就可以看了

给一个相关的代码吧,包括所有的鼠标事件。

下面代码包括

按下,释放,进入区域,离开区域,点击 这5个事件

鼠标的相关事件会在窗口上方的文本区显示。。。

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class TestMouseEvent extends JFrame implements MouseListener{

JPanel jp = new JPanel();

JTextField jtf = new JTextField();

public TestMouseEvent(){

setTitle("Mouse Event");

getContentPane().add(jtf,BorderLayout.NORTH);

getContentPane().add(jp,BorderLayout.CENTER);

jp.addMouseListener(this);

}

public static void main(String[] args){

TestMouseEvent frame = new TestMouseEvent();

frame.setSize(200,200);

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void mousePressed(MouseEvent e){

int x = e.getX();

int y = e.getY();

String s = "鼠标在坐标"+"("+x+","+y+")"+"出按下";

jtf.setText(s);

}

public void mouseReleased(MouseEvent e){

int x = e.getX();

int y = e.getY();

String s = "鼠标在坐标"+"("+x+","+y+")"+"出释放";

jtf.setText(s);

}

public void mouseClicked(MouseEvent e){

int x = e.getX();

int y = e.getY();

String s = "鼠标在坐标"+"("+x+","+y+")"+"出点击";

jtf.setText(s);

}

public void mouseEntered(MouseEvent e){

int x = e.getX();

int y = e.getY();

String s = "鼠标在坐标"+"("+x+","+y+")"+"出进入";

jtf.setText(s);

}

public void mouseExited(MouseEvent e){

int x = e.getX();

int y = e.getY();

String s = "鼠标在坐标"+"("+x+","+y+")"+"出离开";

jtf.setText(s);

}

}

java中控制鼠标点击的方法

//利用 java.awt.Robot 类来自动完成一些键盘或鼠标的动作,下面是一个小例子

//程序流程:模拟鼠标左键点击 开始--运行--CMD--DIR--CLS--EXIT

//模拟右键点击 移动到右下角--右键点击--调整日期和时间--退出

import java.awt.*;

import java.awt.event.*;

import javax.swing.JOptionPane;

//Test.java

public class Test {

public static void main(String[] args) throws Exception {

final Robot rb = new Robot();

new Thread(){

public void run(){

rb.delay(2000);

//回车

rb.keyPress(KeyEvent.VK_ENTER);

rb.keyRelease(KeyEvent.VK_ENTER);

}

}.start();

JOptionPane.showMessageDialog(null,"以下程序自动执行,包括本对话框,请不必进行人为干预.\n如果不能正常执行程序,请先关闭输入法");

//设置开始菜单的大概位置

int x = 40;

int y = Toolkit.getDefaultToolkit().getScreenSize().height-10;

//鼠标移动到开始菜单,

rb.mouseMove(x,y);

rb.delay(500);

//单击三次开始菜单

for(int i=0; i3; i++)

pressMouse(rb,InputEvent.BUTTON1_MASK,500);

rb.delay(1000);

//运行CMD命令 r cmd enter

int[] ks = {KeyEvent.VK_R,KeyEvent.VK_C,KeyEvent.VK_M,KeyEvent.VK_D,KeyEvent.VK_ENTER,};

pressKeys(rb,ks,500);

rb.mouseMove(400,400);

rb.delay(500);

//运行DIR命令 dir enter

ks = new int[]{KeyEvent.VK_D,KeyEvent.VK_I,KeyEvent.VK_R,KeyEvent.VK_ENTER};

pressKeys(rb,ks,500);

rb.delay(1000);

//运行CLS命令 cls enter

ks = new int[]{KeyEvent.VK_C,KeyEvent.VK_L,KeyEvent.VK_S,KeyEvent.VK_ENTER};

pressKeys(rb,ks,500);

rb.delay(1000);

//运行EXIT命令 exit enter

ks = new int[]{KeyEvent.VK_E,KeyEvent.VK_X,KeyEvent.VK_I,KeyEvent.VK_T,KeyEvent.VK_ENTER};

pressKeys(rb,ks,500);

rb.delay(1000);

//右键测试

x=Toolkit.getDefaultToolkit().getScreenSize().width-10;

rb.mouseMove(x, y);

//如果是双键鼠标,请改用InputEvent.BUTTON2_MASK试试,我没有这种鼠标

pressMouse(rb,InputEvent.BUTTON3_MASK,500);

//显示日期调整对话框 a

pressKeys(rb,new int[]{KeyEvent.VK_A},1000);

rb.delay(2000);

pressKeys(rb,new int[]{KeyEvent.VK_ESCAPE},0);

rb.delay(1000);

new Thread(){

public void run(){

rb.delay(1000);

//回车

rb.keyPress(KeyEvent.VK_ENTER);

rb.keyRelease(KeyEvent.VK_ENTER);

}

}.start();

JOptionPane.showMessageDialog(null,"演示完毕!");

}

//鼠标单击,要双击就连续调用

private static void pressMouse(Robot r,int m,int delay){

r.mousePress(m);

r.delay(10);

r.mouseRelease(m);

r.delay(delay);

}

//键盘输入

private static void pressKeys(Robot r,int[] ks,int delay){

for(int i=0; iks.length; i++){

r.keyPress(ks[i]);

r.delay(10);

r.keyRelease(ks[i]);

r.delay(delay);

}

}

}

java自定义鼠标形状

希望这段代码对你有用

1.自定义个类扩展Cursor,重写Cursor的方法:

class MyCursor extends Cursor {

public MyCursor(int n) {

super(n);

}

static public Cursor getSystemCustomCursor(final String name)

throws AWTException, HeadlessException {

Toolkit toolkit = Toolkit.getDefaultToolkit();

Image image = toolkit.getImage(name);

return toolkit.createCustomCursor(

image, new Point(0, 0), "myCursor");

}

}

2.在你的程序中:

try {

String ico = "D:\\myCursor.gif";//你图标的位置

this.setCursor(MyCursor.getSystemCustomCursor(ico));

}catch(Exception ae) {

}

-------------------------------------------------------------------

在你的基础上改成下面这个样子就可以了

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import java.awt.*;

public class test extends JFrame {

public test() {

try {

this.getContentPane().setCursor(getMyCursor());

} catch (Exception e) {

}

this.setSize(640, 500); // 窗口大小为640*500

this.setVisible(true); // 窗口可见

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public static void main(String[] args) {

test m = new test();

}

public Cursor getMyCursor(){

Image img = new ImageIcon(test.class.getResource("arrow40.cur")).getImage();

return this.getToolkit().createCustomCursor(img,new Point(16,16),"mycursor");

}

}

Java写的模拟鼠标的游戏辅助,运行时没法在游戏界面正常点击

java模拟键盘鼠标等操作, 我也研究过几天,现在把学习心得分享下.

存在的问题: 现在的问题表面是游戏所在的磁盘路径, 影响了Java的执行效果 ,其实不同的游戏你又会发现不同的BUG, 比如有的游戏,你会发现Java没有办法模拟键盘输入,有的游戏java无法模拟鼠标动作.有的游戏,Java模拟完全失效. 只有少部分小游戏, Java可以勉强模拟运行.

根本原因是: Java不擅长与系统底层打交道, 毕竟还隔着虚拟机, 就算使用了Java Robot类,进行简单的键盘鼠标模拟, 还是不够稳定.

解决办法 : 当然了还是有解决办法的,比如在Java中可以使用下面的两种方法:

方法一: Robot, 比较初级和粗糙, 功能弱小, 只能前台运行.

方法二: JNI/JNA技术, 调用windows API ,或者调用c语言代码. 可以完成

!!!强烈推荐该方法,可以后台运行, 特别是JNA, 简化了JNI, 用起来很方便

方法三: JACOB 技术,  目前比较成熟的就是大漠插件, java可以使用JACOB技术,来调用他

有些函数, 没有办法完成调用...

其他途径的解决: C# 调用 大漠插件 , 基本完美解决了;

为什么选择C#, 因为和Java语法特别类似, 迁移方便

为什么选择大漠插件, 因为很多的函数 都可以直接调用调用即可, 比如找图,找色,找字,截图, 模拟键鼠操作等.

下面是学习的时候写过的几个小案例

我们学习的目的是为了深入了解Java技术.

JAVA中关于鼠标事件的问题

肯定是位运算符,为什么API里说可以把控制键使用位运算符来操作的原因,我给你作个例子,你就会明白了。

在JAVA中控制键(就是ctrl, alt等,当然你这里的这个也是这个范围内的)是用某一个字节中的位来表示的,我们假设在java使用一个字节(8位)来表过这些控制键。比如这一个字节的第1位表示ctrl,第2位表示alt...最后一位表示BUTTON3_DOWN_MASK,那么当按下ctrl第1位会被置于1,按下alt最后一位会被置于1,如果按下鼠标右见,则最后一位被置于1。因此常量BUTTON3_DOWN_MASK在这个字节中的表示就是0000 0001。如果是这样的话,我们来看你的if语句。

event.getModifiersEx()InputEvent.BUTTON3_DOWN_MASK ,这样就很明白了。如果你按下了ctrl,也就是把这个字节的第1位置1,也就是1000 0000然后把这个数拿来与0000 0001按位与,结果为0,表示没按下鼠标右见。因此只有当你按下鼠标右见时表达式才为真,也就是才为1。整个表达式也就是(event.getModifiersEx()InputEvent.BUTTON3_DOWN_MASK)!=0没有按下鼠标右见时,条件为真。

java鼠标模组的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java模拟鼠标键盘、java鼠标模组的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。