2012-07-18 20 views
1

我有一个电话只有一个物理键,它被点击作为后退操作。但是关键事件不能在LWUIT 1.5中找到。这里是我的代码:物理键按下的事件不能被捕获LWUIT



    import com.sun.lwuit.Command; 
    import com.sun.lwuit.Form; 
    import com.sun.lwuit.events.ActionEvent; 

    public class CustomForm extends Form { 

     public CustomForm() { 
      Command backCmd = new Command("BACK", 2) { 
       public void actionPerformed(ActionEvent evt) { 
        System.out 
          .println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! back cmd evt: " 
            + evt); 
       } 
      }; 
      this.addCommand(backCmd, 0); 
     } 

     public void keyPressed(int aKeyCode) { 
      System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@ key code = " + aKeyCode); 
      super.keyPressed(aKeyCode); 
     } 

     public void keyReleased(int keyCode) { 
      System.out 
        .println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ key released code: " 
          + keyCode); 
      super.keyReleased(keyCode); 
     } 
    } 

但是,关键事件可以用LCDUI Form捕获。以下是LCDUI的代码:



    import javax.microedition.lcdui.Command; 
    import javax.microedition.lcdui.CommandListener; 
    import javax.microedition.lcdui.Display; 
    import javax.microedition.lcdui.Displayable; 
    import javax.microedition.lcdui.Form; 
    import javax.microedition.lcdui.StringItem; 
    import javax.microedition.midlet.MIDlet; 
    import javax.microedition.midlet.MIDletStateChangeException; 

    public class Test extends MIDlet implements CommandListener { 

     protected void destroyApp(boolean arg0) throws MIDletStateChangeException { 
      // TODO Auto-generated method stub 

     } 

     protected void pauseApp() { 
      // TODO Auto-generated method stub 

     } 

     protected void startApp() throws MIDletStateChangeException { 
      Form form = new Form("Hello World"); 
      StringItem str = new StringItem("HI", "BYE"); 
      form.append(str); 
      Command bc = new Command("Back", Command.BACK, 1); 
      form.addCommand(bc); 
      form.setCommandListener(this); 

      Display.getDisplay(this).setCurrent(form); 
     } 

     public void commandAction(Command c, Displayable d) { 
      System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~ Got command: " 
        + c.getCommandType() + " " + c.getLabel()); 
      if (c.getCommandType() == Command.BACK) { 
       // Application logic for Back button press 
      } 
     } 

    } 

LWUIT可能会忽略某些关键事件吗?任何人都可以帮我吗?

回答

0

后退被发送到后退命令并且不向前传播。

+0

我怎么能在我的应用程序 – 2012-09-18 09:41:50

+0

处理默认回命令确保将其添加到每一个形式,是通过setBackCommand(yourCommand)相关 – 2012-09-24 09:53:48

+0

我已经这样做,我将其添加在MyForm的类,使所有其他形式的继承从MyForm,然后我做一个后退行动方法抽象并在每个子窗体中实现它,然后使用反射我从父窗体应用当前窗体的行为,现在可行,但我不知道它是否会造成任何问题下一个 – 2012-09-24 10:01:48