【问题标题】:Keypressed while a thread is running - how to capture the keys?线程运行时按键 - 如何捕获键?
【发布时间】:2012-02-23 17:46:44
【问题描述】:

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

圆圈在屏幕上随机移动,而正方形则原地不动。我的意图是使用箭头按钮移动方块。 当前的设计是有一个带有while循环的线程,该循环包含一个延迟,该延迟在其运行方法中设置“刷新率”。

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

如何捕获按键(示例中的箭头),以便知道将方块移动到哪里? 我尝试在jpanel 中实现keylistener,但没有成功。当我尝试在运行中使用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 按键?我需要改变什么?

谢谢!我有点新手,我知道:)

【问题讨论】:

标签: java multithreading swing jpanel keylistener


【解决方案1】:

KeyListener 不是指定用于收听Swing GUI,这个Listener 是为pre_historic AWT Component 构建的,这些天那么远,使用KeyBindingsthis example can save your person

【讨论】:

  • @Zephyer 很高兴能救你:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
  • 2012-12-08
相关资源
最近更新 更多