【问题标题】:Softbuttons not responding after overriding keypressed and keyreleased覆盖按键和按键释放后软按钮没有响应
【发布时间】:2013-11-21 08:54:30
【问题描述】:

我正在开发一个应用程序,该应用程序需要我覆盖 lwuit 中的 keypressed 和 release 方法,以便将特定功能映射到游戏键中。

当我这样做时,游戏键可以正常工作,但我无法向应用程序添加两个以上的命令。通常 actionlistener 会自动处理多个命令的映射,但它不会。

是否可以将多个命令映射到一个软键(例如使用键码 -7)并有一个 if 语句来动态检查哪个命令被按下。

 public void keyReleased(int keyCode) {

      switch (keyCode) {
        case -6: // left cmd key
             function a();
            return;
        case -7: // right cmd key
//Need this to handle more than one command function

            return;

    }
   //function to handle gamekeys
}

希望我对自己的问题足够清楚。请帮忙

【问题讨论】:

    标签: java-me lwuit lwuit-command


    【解决方案1】:

    在我看来,你想做的事情是不可能的。一个软键中始终有一个取消命令,而另一个软键中有一个菜单(如果添加了多个命令)。

    要获得正确的keyCode,要为软键设置另一个功能,您应该获得正确的keyCode。在方法 keyReleased 的第一行之前创建一个System.out.println("keycode " + keyCode);

    【讨论】:

    • 问题在于菜单,即。添加到表单的其他命令没有响应......就像我有一个下一个命令和信息命令,除了取消命令......菜单显示得很好,但是我用命令放置的逻辑没有得到执行.. .这就是为什么我要问是否可以从 keyreleased 方法中显式调用该逻辑,例如检查按下的命令是下一个还是信息
    • 您是否尝试使用适当的 keyCode 为 keyReleased 设置一些功能?
    • 就像在示例中一样,如果我调用函数 a() 它可以工作,但我遇到了使用菜单命令检查软键运行的问题...让我举个例子' if (evt.getCommand() == backCommand) { function a(); } else if (evt.Command == nextCommand) { function next(); } else if (evt.Command() == infoCommand) { function info(); }'
    • 希望在 keyreleased 方法中有类似的东西已经尝试但没有找到任何方法来检查 keyreleased/pressed 方法中的命令
    • 设置按钮而不是命令并将功能添加到软键...现在可以使用了,谢谢
    【解决方案2】:

    如果您想进行自定义键/菜单处理,您需要替换 MenuBar 类。只需将MenuBar 子类化并在LookAndFeel 中定义您的新类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-28
      • 2016-02-08
      • 1970-01-01
      • 2015-03-24
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多