「java鼠标模组」java模拟鼠标键盘
本篇文章给大家谈谈java鼠标模组,以及java模拟鼠标键盘对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java 鼠标事件
- 2、如何用JAVA编一个 鼠标在在屏幕上移动的 并点击的 程序?
- 3、java中控制鼠标点击的方法
- 4、java自定义鼠标形状
- 5、Java写的模拟鼠标的游戏辅助,运行时没法在游戏界面正常点击
- 6、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鼠标模组的信息别忘了在本站进行查找喔。
发布于:2022-12-24,除非注明,否则均为
原创文章,转载请注明出处。