0

我正在基于 java 机器人类创建一个类。这样做的目的是能够发送这样的东西:“我喜欢香蕉,但不喜欢苹果$(但是黄油*)”

查看时:http ://docs.oracle.com/javase/6/docs/api/constant-values.html#java.awt.event.KeyEvent.VK_S

我可以看到几个事件,所以我不知道该选择哪一个。例如“*”被称为 VK_ASTERISK 或 VK_MULTIPLY。

因此,我想在控制台上显示按下按钮时触发的键事件的名称。

这可能吗?

(无需进行巨大的开关测试所有已知事件)

谢谢。

4

2 回答 2

0

我用到处找到的零件做的,效果很好

import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JTextField;

public class MainClass {
  public static void main(String args[]) throws Exception {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JTextField nameTextField = new JTextField();
    frame.add(nameTextField, BorderLayout.NORTH);

    KeyListener keyListener = new KeyListener() {
      public void keyPressed(KeyEvent keyEvent) {
        printIt("Pressed", keyEvent);
      }

      public void keyReleased(KeyEvent keyEvent) {
        //printIt("Released", keyEvent);
      }

      public void keyTyped(KeyEvent keyEvent) {
        //printIt("Typed", keyEvent);
      }

      private void printIt(String title, KeyEvent keyEvent) {
        int keyCode = keyEvent.getKeyCode();
        String keyText = KeyEvent.getKeyText(keyCode);
        System.out.println(title + " : " + keyText + " / " + keyEvent.getKeyChar() + " code = " + keyEvent.getKeyCode());
      }
    };
    nameTextField.addKeyListener(keyListener);

    frame.setSize(250, 100);
    frame.setVisible(true);
  }
}

只需运行它,按一个键并查看您的 Eclipse 控制台

于 2013-09-03T12:10:51.540 回答
0

getSource()功能应该可以帮助您。

http://docs.oracle.com/javase/6/docs/api/java/util/EventObject.html#getSource()

于 2013-09-03T11:36:54.847 回答