2016-06-07 13 views
1

내가 프로그래밍 해요 J (2) ME 응용 프로그램 (실제로는 미들 릿) 사용할 수있는 명령 버튼보다 더 많은 명령을 화면에 표시하고, 나는이 상황에 붙어 :암시 적 메뉴 '뒤로'명령을 잡는 방법?

매핑 콘크리트 사용자에게 인터페이스 구성은 명령의 총 수에 따라 달라질 수 있습니다. 예를 들어 응용 프로그램에서 장치의 실제 단추 인 에 매핑 할 수있는 것보다 많은 추상 명령을 묻는 경우 장치는 메뉴와 같은 대체 휴먼 인터페이스를 사용할 수 있습니다. 예를 들어, 물리적 버튼에 매핑 할 수없는 추상 명령 은 메뉴에 배치되고 레이블 "메뉴"는 프로그래밍 가능한 버튼 중 하나에 매핑됩니다.

http://docs.oracle.com/javame/config/cldc/ref-impl/midp2.0/jsr118/javax/microedition/lcdui/Command.html

그래서이 상황에서 메뉴가 자동으로 생성이며, '선택'과 '뒤로'선택했다. '뒤로'선택은 메뉴를 종료하고 이전 화면으로 돌아 가기로되어 있습니다. 이것은 원칙적으로 작동합니다. 문제는 어떻게 든 그것을 잡아서 다시 그리기를 트리거해야한다는 것입니다. 그렇지 않으면 화면이 공백이됩니다.

그래서 내 질문은 :이 '암시'(자동으로 추가 '뒤로'명령을 잡을 수있는 방법이 있나요

코드 예제 및 결과 :

enter image description here

public class HelloWorld extends MIDlet 
    { 
    private Form helloFrm; 
    private Display display; 

    public HelloWorld() { 
     Command command1 = new Command("Cmd 1", Command.SCREEN, 1); 
     Command command2 = new Command("Cmd 2", Command.SCREEN, 0); 
     Command command3 = new Command("Cmd 3", Command.SCREEN, 0); 
     Command command4 = new Command("Cmd 4", Command.SCREEN, 0); 

     helloFrm = new Form("Hello World"); 

     helloFrm.addCommand(command1); 
     helloFrm.addCommand(command2); 
     helloFrm.addCommand(command3); 
     helloFrm.addCommand(command4); 
    } 

    public void startApp() 
    { 
     display = Display.getDisplay(this); 
     display.setCurrent(helloFrm); 

    } 

    public void pauseApp() 
    { 
    } 

    public void destroyApp(boolean unconditional) 
    { 
    } 
} 

에 편집 더 자세한 내용을 추가하십시오 :

제 의견에 따라 양식에서 캔버스로 돌아가서 제 앱에서 화면 비우기가 발생합니다. 나는 이미 자신의 'Back'명령을 추가했습니다.이 명령은 CommandListener를 쉽게 잡아서 그에 따라 처리 할 수 ​​있으므로 제대로 작동합니다 (다시 그리기를 트리거). 하지만 이제는 두 개의 '뒤로'명령, 내재적 인 명령 (공백) 및 광산이 있습니다. 질문의 대체 버전은 다음과 같습니다. 암시 적 '뒤로'명령을 어떻게 든 추가 할 수 있습니까?

+0

"어떻게 든 잡을 필요가 있고 다시 그리기를 트리거해야합니다. 그렇지 않으면 화면이 공백이됩니다."실제 응용 프로그램이 Form이 아닌 Canvas를 기반으로하는 것처럼 보입니다. 내가 맞습니까? –

+0

당신은 절대적으로 옳습니다. 내 실제 응용 프로그램에서 Form을 통해 'Back'을 Canvas로 다시 보냅니다. 화면이 비어있는 경우입니다. – nofish

+0

sizeChanged 또는 showNotify가 호출되었는지 확인 했습니까? –

답변

1

당신은 암시 적 '뒤로'명령의 추가 막을 수 없습니다,하지만 당신은 Canvas.showNotify에 전화에서 화면을 다시 그릴 수 있습니다 :이 캔버스 인에

구현은 showNotify 함수를 (호출) 직전 디스플레이에 표시됩니다. 캔버스 서브 클래스는 애니메이션, 시작 타이머 등을 설정하기 전에이 메서드를 오버라이드하여 표시하기 전에 작업을 수행 할 수 있습니다. Canvas 클래스의 메서드의 기본 구현은 비어 있습니다.