在Java中,你可以使用Robot
类来模拟键盘事件。以下是一个完整的示例,演示了如何在按下F
键后自动按下C
键和G
键。代码中已经包含了创建窗口和处理键盘事件的逻辑。
import java.awt.*;
import java.awt.event.*;
public class KeySimulator {
public static void main(String[] args) {
Robot robot = null;
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
return;
}
Frame frame = new Frame();
frame.setSize(1, 1);
frame.setUndecorated(true); // 可以设置为无边框窗口
frame.setVisible(true);
frame.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_F) {
// 模拟按下 C 键
robot.keyPress(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_C);
// 模拟按下 G 键
robot.keyPress(KeyEvent.VK_G);
robot.keyRelease(KeyEvent.VK_G);
}
}
});
// 使程序保持运行,直到用户关闭窗口
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
frame.dispose();
System.exit(0);
}
});
// 保持窗口运行
while (true) {
try {
Thread.sleep(100); // 减少 CPU 占用
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
}
请注意以下几点:
- 我们创建了一个无边框的窗口,它的大小被设置为1x1,以使其尽可能小,但它仍然是可见的,这样才能接收键盘事件。
- 在
keyPressed
方法中,我们检查是否按下了F
键(VK_F
)。如果是,则使用Robot
对象模拟按下C
键和G
键。 - 程序使用一个无限循环来保持窗口运行,并且在循环中使用
Thread.sleep
来减少CPU占用。
确保在运行此程序时你有足够的权限来创建Robot
实例,否则可能会抛出AWTException
。在一些系统中,可能需要以管理员身份运行Java程序。