以下是我的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听到逃生钥匙?我搜索了很多论坛,到目前为止没有任何建议。
提前致谢。
答案 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听到了退出按钮。