在线程运行时按键 - 如何捕获键?

时间:2012-02-23 17:46:45

标签: java multithreading swing jpanel keylistener

我有一个JPanel,其中包含一些其他对象。我将通过讨论一些圆形对象(由我制作的圆类定义)和一个方形对象(类似)来简化示例。

圆圈在屏幕周围随机移动,而正方形则位于其位置。我的意图是使用箭头按钮移动方块。 当前的设计是让一个带有while循环的线程包含一个延迟,该延迟在其run方法中设置'刷新率'。

我正在尝试我所知道的每一种方法来捕捉箭头键并在球在屏幕上运行时移动方块。

如何捕获按键(示例中的箭头),以便知道将方块移动到哪里? 我尝试在keylistener中实施jpanel,但它不起作用。当我尝试在运行中使用KeyEvent时,我得到了一个例外。

请救救我。 :)

编辑:

感谢您提供的信息。我想进一步帮助解决这个问题 -

假设我有以下代码:

this.getInputMap().put(KeyStroke.getKeyStroke("UP"), "actionName");
this.getInputMap().put(KeyStroke.getKeyStroke("DOWN"), "actionName");

  this.getActionMap().put("actionName",
            new AbstractAction("actionName") {
                public void actionPerformed(ActionEvent evt) {
                   //dostuff
        }
     }
);

如何区分UP和DOWN印刷机?我需要改变什么?

谢谢!我知道,我有点新手了。)

1 个答案:

答案 0 :(得分:2)

KeyListener未指定在Swing GUI中进行收听,此Listener是针对史前AWT Component而建立的,这些日子如此遥远,请使用KeyBindingsthis example can save your person