简体   繁体   English

找出哪个按键事件被调用

[英]Find out which keystroke event is called

I'm making a class base on the java robot class. 我正在基于Java机器人类创建一个类。 The purpose of this is to be able to send thing like that : "I like bananas, but not apple$ (however butter*)" 这样做的目的是能够发送这样的信息:“我喜欢香蕉,但不喜欢apple $(但是黄油*)”

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

I can see several event, so I don't know wich one to choose. 我可以看到几个事件,所以我不知道该选择哪一个。 for example "*" is called VK_ASTERISK or VK_MULTIPLY. 例如,“ *”称为VK_ASTERISK或VK_MULTIPLY。

Therefor I'd like to display on the console the name of the keyevent triggered when I press a button. 因此,我想在控制台上显示按下按钮时触发的按键事件的名称。

is this possible? 这可能吗?

(without making a huge switch testing all known event) (无需进行大量测试所有已知事件的切换)

Thanks. 谢谢。

I made this from part found here and there, works fine 我从这里到那里找到的零件制成的,效果很好

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

just run it, press a key and look at your eclipse console 只需运行它,按一个键,然后查看您的Eclipse控制台

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM