我将我的midlet移植到Blackberry,我无法为ESCAPE键分配监听器

时间:2012-02-28 13:15:15

标签: blackberry java-me lwuit

以下是我的midlet中的一些代码:

addKeyListener 方法在无法识别函数时出现错误。

import net.rim.device.api.system.KeyListener;
import net.rim.device.api.ui.Keypad;

public class PhraZApp extends javax.microedition.midlet.MIDlet implements ActionListener{

public PhraZApp {
 addKeyListener (new KeyPadListener());
}


 protected void keyPressed(int key) {
    System.out.println(key);
}

public void actionPerformed(ActionEvent evt) {
    System.out.println(evt.getKeyEvent());
}

 public final class KeyPadListener implements KeyListener {

    public boolean keyChar(char key, int status, int time) {

        return false;
    }

    public boolean keyDown(int keycode, int time) {
        if (Keypad.KEY_ESCAPE == Keypad.key(keycode)) {
                  System.out.println("key: " + keycode);
        return true;
    }
            //let the system to pass the event to another listener.
    return false;
    }

    public boolean keyUp(int keycode, int time) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean keyRepeat(int keycode, int time) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean keyStatus(int keycode, int time) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

任何听众都听不到keyPressed动作。

我被告知要将一个密钥列表添加到一个GUI组件中,但没有我尝试接受它。 此外,一个可能的问题是没有声明addKeyListener方法,但在这种情况下我不知道如何声明它。

如果我将 extends javax.microedition.midlet.MIDlet 更改为扩展UiApplication addKeyListener 将被接受,但整个midlet将落入RuntimeErrorException。

如何让我的Midlet听到逃生钥匙?我搜索了很多论坛,到目前为止没有任何建议。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您需要创建一个LWUIT Command并使用setBackCommand方法将其分配给父表单。您可以像处理LWUIT中的所有其他命令一样处理命令事件。例如。通过命令监听器,甚至只是通过子类化并覆盖actionPerformed(ActionEvent)

答案 1 :(得分:1)

感谢Shai pointing me in the right direction,我解决了它。

我是这样做的。

Command backCommand = new Command("",Keypad.KEY_ESCAPE);
form.setBackCommand(backCommand);

然后

 public void actionPerformed(ActionEvent evt) {

    if (evt.getCommand().getId() ==Keypad.KEY_ESCAPE){
        //execution code  
    }

我没试过,但是如果我在命令中包含了文字,我想按下菜单按钮就会出现这种情况。重要的是,在经过数小时的尝试和搜索解决方案之后,我终于让MIDlet听到了退出按钮。