2

我在机器人对象上使用键盘事件....

但每次我必须单独指定键....就像

Robot r=new Robot();
r.KeyPress(KeyEvent.VK_A);
r.KeyPress(KeyEvent.VK_B);
r.KeyPress(KeyEvent.VK_C);
r.KeyPress(KeyEvent.VK_D);

是否有任何技术可以获取/识别每个键......而不是通过单独指定它们......?我在keyCode变量中从服务器端接收键码......所以我可以直接使用这个变量代替“KeyEvent.VK_D”,如r.keyPress(keyCode);

4

3 回答 3

1

Key 标识符只是一个 Int 值。当服务器值与 java 值匹配时,您可以直接将值放入。如果不是,则必须创建一个 Map,其中服务器值引用 java 键值。

在 C++ Qt 键事件和 Java 键事件之间的转换过程中,我遇到了同样的问题。该值也不匹配。我必须为此创建一个映射。

看一下 KeyEvent 类。每个键都用一个 int 值列出。您必须检查从服务器获得的值是否与此 int 值匹配。当服务器值不匹配时,您必须创建一个 Map。映射键是服务器值,映射值是按下键对应的 KeyEvent 值。

当值匹配时,您不必创建地图。您可以直接将服务器值用于 Robot 命令。

于 2009-06-18T09:23:12.373 回答
0

如果我正确理解了您的问题,那么您正在尝试在按下任何键时执行此操作。尽管我怀疑我是否正确阅读了您的问题,但解决方案是使用 KeyEvent.KEY_PRESSED,如果您想要一个操作或在释放键时设置一个变量,它将是 KeyEvent.KEY_RELEASED。虽然,我有点困惑。您是否真的希望在按下每个键时都发生相同的操作,或者您是否想要一组键的唯一事件?

于 2009-06-20T07:16:55.957 回答
0

嗯……是吗?KeyEvent.VK_D 中的常量只是为了您的方便。使用其他地方的数值绝对没有错,只要相同的值用于相同的键。

于 2009-06-18T09:23:55.477 回答