java如何操作键盘
使用 Java 操作键盘的方法
通过 Robot 类模拟键盘输入
Java 的 java.awt.Robot 类可以模拟键盘和鼠标操作,适用于自动化测试或脚本控制。
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class KeyboardExample {
public static void main(String[] args) throws Exception {
Robot robot = new Robot();
// 模拟按下并释放A键
robot.keyPress(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_A);
// 组合键示例:Ctrl+C
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_CONTROL);
}
}
通过 KeyListener 监听键盘事件
用于监听 GUI 组件(如 JFrame 或 JPanel)的键盘输入。
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class KeyListenerExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Keyboard Listener");
frame.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
System.out.println("Key Pressed: " + KeyEvent.getKeyText(e.getKeyCode()));
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("Key Released: " + KeyEvent.getKeyText(e.getKeyCode()));
}
@Override
public void keyTyped(KeyEvent e) {
System.out.println("Key Typed: " + e.getKeyChar());
}
});
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
使用 JNativeHook 监听全局键盘事件
如果需要监听系统全局键盘事件(即使窗口未聚焦),可以使用第三方库 JNativeHook。

-
添加依赖(Maven):
<dependency> <groupId>com.github.kwhat</groupId> <artifactId>jnativehook</artifactId> <version>2.2.2</version> </dependency> -
代码示例:

import org.jnativehook.GlobalScreen; import org.jnativehook.keyboard.NativeKeyEvent; import org.jnativehook.keyboard.NativeKeyListener;
public class GlobalKeyListenerExample { public static void main(String[] args) { try { GlobalScreen.registerNativeHook(); } catch (Exception e) { e.printStackTrace(); }
GlobalScreen.addNativeKeyListener(new NativeKeyListener() {
@Override
public void nativeKeyPressed(NativeKeyEvent e) {
System.out.println("Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
}
@Override
public void nativeKeyReleased(NativeKeyEvent e) {
System.out.println("Released: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
}
@Override
public void nativeKeyTyped(NativeKeyEvent e) {
// 不常用
}
});
}
}
#### 通过 `System.in` 读取控制台键盘输入
适用于命令行程序的简单键盘输入。
```java
import java.util.Scanner;
public class ConsoleInputExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter text:");
String input = scanner.nextLine();
System.out.println("You entered: " + input);
scanner.close();
}
}
注意事项
Robot类需要程序具有图形环境权限,可能在某些无头(headless)环境中失效。JNativeHook提供了跨平台的全局键盘监听能力,但需注意权限和性能影响。- 监听键盘事件时,避免阻塞主线程或执行耗时操作。






