【问题标题】:Java: simulate keypresses when mouse clicked?Java:单击鼠标时模拟按键?
【发布时间】:2018-11-06 00:55:00
【问题描述】:

所以,我对编程很陌生,我喜欢摆弄它,有一天我的朋友让我做一个程序,当你点击时,“ctrl”和“s”会被“按下”。我查看了很多论坛试图编写功能代码,但是由于我是 Java 新手,所以我只得到了单独的代码片段并将它们全部放在一起。

我的代码如下所示:

import java.awt.event.MouseEvent;  
import java.awt.*;  
import java.awt.event.*;  
import java.awt.Robot;   
import java.util.Scanner;

public class MyClass {  
    public static void main(String args[]) {  
        Scanner keyboard = new Scanner(System.in);  
        System.out.println("press any key to exit.");  
        keyboard.next();
        System.exit(0);
    }  
    public void mouseClicked(MouseEvent evt) {  
        try {  
            Robot robot = new Robot();  
            // Simulate a key press  
            robot.keyPress(KeyEvent.VK_CONTROL);  
            robot.keyPress(KeyEvent.VK_S);  
            robot.keyRelease(KeyEvent.VK_S);   
            robot.keyRelease(KeyEvent.VK_CONTROL);  
    } catch (AWTException e) {        
        }  
    }  
}  

【问题讨论】:

  • 你需要 GUI 来连接你的鼠标监听器

标签: java awt awtrobot


【解决方案1】:

您的程序没有 GUI,因此没有任何东西可以调用您的鼠标侦听器。侦听器中的代码看起来是正确的,您需要做的就是搜索如何创建基本 GUI 并将鼠标侦听器添加到其中以获得所需的结果。

【讨论】:

  • 那么 GUI 是必要的吗?该程序的想法是,如果您单击“ctrl + s”按下的任意位置,是否可以制作一个覆盖整个屏幕的隐形正方形?
  • 一个基本版本是可能的(搜索它),但你将无法简单地锁定 Windows 上的任务栏或类似的东西,而不会变得更复杂。
【解决方案2】:

以下代码可以帮助你处理 Ctrl + S

public class SwingApp1 extends JFrame implements KeyListener {
public SwingApp1() {
    setSize(500, 500);
    setLocationRelativeTo(null);
    setBackground(Color.blue);
    addKeyListener(this);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
    SwingApp1 main = new SwingApp1();
    main.setVisible(true);
}

@Override
public void keyTyped(KeyEvent evt) {

}

@Override
public void keyPressed(KeyEvent e) {
    System.out.println("Pressed=>" + e.getKeyCode());
    if (e.getKeyCode() == 83) {
        System.out.println("Pressed Ctrl + S");
    } // Ctrl + S
}
@Override
public void keyReleased(KeyEvent e) {
}}

【讨论】:

    猜你喜欢
    • 2019-10-21
    • 1970-01-01
    • 2010-12-16
    • 2023-03-23
    • 1970-01-01
    • 2019-11-02
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多