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 に答える