1
물리적 키가 하나 뿐인 휴대 전화가 있으며 BACK 키로 클릭합니다. 그러나 핵심 행사는 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 양식으로 키 이벤트를 포착 할 수 있습니다. 다음은 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에 의해 무시됩니까? 누구든지 나를 도울 수 있을까?
내 응용 프로그램에서 기본 뒤로 명령을 처리 할 수있는 방법 –
setBackCommand (yourCommand)를 통해 관련된 모든 양식에 추가해야합니다. –
MyForm 클래스에 추가하고 다른 모든 폼을 상속하도록했습니다. MyForm에서, 그때 나는 다시 액션 메서드를 추상화하고 각 자식 폼에 그것을 구현하고 반사를 사용하여 부모 폼에서 현재 폼의 동작을 적용, 그것은 지금 작동하지만, 어떤 문제가 있는지 모르겠다 다음 것 –