【问题标题】:Keyboard input trigger mouse click键盘输入触发鼠标点击
【发布时间】:2017-11-21 11:45:55
【问题描述】:

我想创建一个在使用键盘时触发鼠标单击或拖放的程序/脚本。例如:如果您按 1,则保存鼠标位置。如果您按 2,鼠标将转到保存的位置。我知道这在不同的编程语言中是可能的,我想知道哪一种最适合用于此目的。谁能给我一点启发?

编辑:

import java.awt.MouseInfo;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import java.awt.AWTException;
import java.awt.event.*;

public class nudan implements KeyListener{

    int x1;
    int y1;
    public static void main(String[] args) throws AWTException{
        JFrame jf = new JFrame("Key Event");
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.addKeyListener(new nudan());
        jf.setVisible(true);
        jf.setAlwaysOnTop(true);

        Robot rt = new Robot();
    }
    @Override
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == e.VK_NUMPAD1){
            System.out.println("Key Pressed: " + e.getKeyChar());
            this.y1 = MouseInfo.getPointerInfo().getLocation().y;
            this.x1 = MouseInfo.getPointerInfo().getLocation().x;
        }
    }
    @Override
    public void keyReleased(KeyEvent e) {
        if(e.getKeyCode() == e.VK_NUMPAD2){
            System.out.println(x1);
            System.out.println(y1);
            try {
                new Robot().mouseMove(x1, y1);

            } catch (AWTException e1) {
                e1.printStackTrace();
            }
        }

    }
    @Override
    public void keyTyped(KeyEvent e) {

    }

}

到目前为止,谢谢你们。所以这行得通。如果按 Numpad 1,它会保存位置并打印“1”。当按下 numpad 2 时,它会转到保存的位置并打印保存的位置。但是不知何故,当我开始我的游戏并尝试使用它时,我的鼠标没有移动,即使它打印了位置,所以脚本仍在运行。有人知道吗?

【问题讨论】:

标签: java


【解决方案1】:

几乎所有语言都可以通过一种相当简单的方式完成此操作,无需使用特定语言。

我假设你刚开始编程,所以编程的一条黄金法则:谷歌一下!

对于 java,您可以轻松找到 MouseInfo 类 (java.awt.MouseInfo) 的文档,该类将提供您需要的功能。

Java

import java.awt.MouseInfo;

public class ExampleMouseInfo {

     public static void main(String[] args){
         int mouseYPos = MouseInfo.getPointerInfo().getLocation().y;
         int mouseXPos = MouseInfo.getPointerInfo().getLocation().x;
         System.out.println(mouseXPos);
         System.out.println(mouseYPos);
     }
}

输出

488
477

这段代码会在你运行程序时获取鼠标的位置。因此,如果您想在某个点触发这部分代码(就像您通过按下按钮所说的那样),您可以从中创建一个函数并将其包装到 event handler 中。

编辑:移动鼠标的例子可以在here找到。

【讨论】:

  • 感谢 Arno C!。我已经用谷歌搜索了,确实你可以找到获取鼠标位置并打印它的方法。但是我在使用事件处理程序时遇到了麻烦。我会继续努力的。
  • 我已经成功了,新问题。我想点击的游戏会禁用所有鼠标移动,当我关闭游戏时它会再次运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
相关资源
最近更新 更多