java 获取鼠标位置,鼠标移动,模拟鼠标左右键

最近无聊自己写界面玩,发现robot类操作鼠标挺好用的。对robot类更加熟一点了。记一下。

 

获取鼠标位置


		Point p  = MouseInfo.getPointerInfo().getLocation();
		System.out.println(p.getX() + "---" +p.getY());

 

鼠标移动

// 鼠标移动
	public static void change(int type, int x, int y){
		Point p = MouseInfo.getPointerInfo().getLocation();
		int width = (int) p.getX() + x;
		int heigh = (int) p.getY() + y;
		if(type == 0) {
			width = x;
			heigh = y;
		}
		Robot robot;
		try {
			robot = new Robot();
			robot.mouseMove(width,heigh);
		} catch (AWTException e) {
			e.printStackTrace();
		}
	}

这里入参type为0时,xy直接为入参本身。

 

模拟鼠标左右键

// 模拟鼠标左键右键
	public static void onclickSB(String lr){
		Robot robot = null;
		try {
		    robot = new Robot();
		} catch (AWTException e) {
		    e.printStackTrace();
		}

		if(lr.equals("right")) {
			robot.mousePress(InputEvent.BUTTON3_MASK);
			robot.mouseRelease(InputEvent.BUTTON3_MASK);
		} else {
			robot.mousePress(InputEvent.BUTTON1_MASK);
			robot.mouseRelease(InputEvent.BUTTON1_MASK);
		}
	}

 

假装没看见自己的函数命名(≖ᴗ≖)✧。如果鼠标移动和鼠标点击同时配合使用,需要加进程暂停,不然,点击和移动的事件执行的顺序会紊乱。所以,需要比较受顺序影响的地方,添加暂停代码,在不影响顺序和体验的前提下,比较适中的数值200毫秒。具体因人而异。


	
	// 进程暂停
	public static void stop(int s){
        try {
        	Thread.sleep(s);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
	}

 

 

实例:


	
	public static void clear(){
		Point p  = MouseInfo.getPointerInfo().getLocation();
//		System.out.println(p.getX() + "---" +p.getY());
		change(0,x, y);
		onclickSB("left");
		change(0,x-40, y-100);
		onclickSB("left");
		change(0,(int)p.getX(), (int)p.getY());
		stop(200);
	}

这是其中一段自己写的清除eclipse控制台日志中点击清理键的鼠标移动,获取鼠标当前位置,改变鼠标位置为xy,点击鼠标左键,改变鼠标位置为已经点击的左上角,点击鼠标左键,改变位置为最初位置。停顿200毫秒。后续我又其他事件,所以需要停顿。

ps:我写的是在控制台打印10行文本内容,有上下两个按钮,上是上一页,下是下一页,一个输入框,可输入页码或者,想查询的文字内容,自动跳行,点击下自动跳行。控制鼠标是为了清理上一次打印的内容,按ctrl+1选中当前鼠标位置为清理日志按钮坐标。

你可能感兴趣的:(java,java界面,java鼠标控制)