键盘输入触发鼠标单击

时间:2017-06-19 10:01:00

标签: java

我想创建一个程序/脚本,在使用键盘时触发鼠标点击或拖动。例如:如果按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,它将保存位置和Prints'1'。当按下numpad 2时,它将转到保存的位置并打印保存的位置。但不知何故,当我开始我的游戏并试图使用它时,我的鼠标不会移动,eventhought它打印位置,所以脚本仍在运行。任何人都有线索?

1 个答案:

答案 0 :(得分:0)

这可以通过几乎所有语言以相当简单的方式完成,不需要使用特定的语言。

我假设你刚刚开始编程,所以编程中的一条黄金法则就是谷歌吧!

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

<强>爪哇

 <?php foreach ($image as $value){?>
 <div class="col-md-3">
    <h3><?php echo $value['title']; ?></h3>
    <div class="img-box">
        <img class="post-thumb" src="<?php echo site_url(); ?>assets/images/portfolios/<?php echo $value['register_id'];?>/<?php echo $value['url']; ?>">
    </a>
  </div>

<强>输出

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);
     }
}

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

编辑:可以找到移动鼠标的示例here