2011-01-11 14 views
4

Ich habe einige verschiedene Arten von Befehl wie OK, Abbrechen, ZURÜCK, BEENDEN, SCREEN in meiner Anwendung gemischt.J2ME empfiehlt Bestellung

Zum Beispiel

exit = new Command("Exit", Command.EXIT, 5); 
_123=new Command("123",Command.BACK,4); 
ABC=new Command("ABC",Command.CANCEL,3); 
sample1=new Command("Sample1",Command.SCREEN,1); 
sample2=new Command("Sample2",Command.OK,2); 

Die i Bestellen müssen, ist: Sample1, Sample2, ABC, Beenden. Aber es wird wie Sample1, Sample2, Exit, ABC auf der rechten Seite und 123 auf der linken Seite angezeigt.

Hier habe ich auch ein Problem beim Hinzufügen eines weiteren Befehls (Edit_Cell) mit wie unten .... und ich muss auch an erster Stelle vor Sample1.Aber es angezeigt in Ende aller Befehle auf der rechten Seite angezeigt Handseite.

Ich habe diesen neuen Befehl (Edit_Cell) in einem anderen src-Dateikonstruktor hinzugefügt und diesen Konstruktor unterhalb meines obigen Codes aufrufen (Befehle hinzufügen).

Edit_Cell ist der Typ von SCREEN und PRIORITIES IS 1 auf der anderen Quelldatei.

Meine endgültige Bestellung, die ich brauche, ist: Edit_Cell,Sample1,Sample2,ABC,Exit, on right hand side and _123 auf der linken Seite.

+0

in welcher Umgebung Sie verwenden? Ich meinte was IDE & WTK besonders? –

+0

ich benutze keine ide.i bin nur mit sun java wireless tool kit 2.5.2. cldc 1.1 und midp2.0 – Saravanan

+0

Persönlich würde ich vorschlagen, NetBeans für dieses env gehen. es wird Ihnen visuellen Designer geben, also brauchen Sie sich nicht um Kerndesigner-Code zu kümmern –

Antwort

0

Ich antworte hier auf Ihren Kommentar, es ist weniger unordentlich ... Vielleicht zeigt es die Befehle in der gleichen Reihenfolge an, in der sie hinzugefügt wurden (ohne Prioritäten zu verwenden). Ich würde alle Befehle löschen, wenn Edit_Cell hinzugefügt wird und sie alle wieder hinzufügen, nachdem Edit_Cell hinzugefügt wird. Wenn Sie nur den Code Ihres Formulars ändern können, können Sie die Methode addCommand überschreiben, um sicherzustellen, dass alle vorherigen Befehle entfernt und später erneut hinzugefügt werden, wenn Edit_Cell hinzugefügt wird.

Etwas wie folgt aus:

@Override 
    public void addCommand(Command cmd) { 
     if (cmd.getLabel().equals("Edit_Cell")){ 
      removeCommand(sample1); // with all the previously added commands 
     } 
     super.addCommand(cmd); 
     if (cmd.getLabel().equals("Edit_Cell")){ 
      addCommand(sample1); // again with all your previously added commands 
     } 
    } 

Es ist nicht sehr elegant, aber gut, kann man immer machen es nobel, solange es funktioniert ....

5

Erstens, und ohne Beleidigung, ich denke, Sie sollten ein wenig mehr Ihre schriftlichen Kompositionen erarbeiten, dauerte es eine Weile, um das Problem zu verstehen.

Doch die Art und Weise Sie Befehle Anspruch macht Sinn, diese nach (Nokias Wiki-Forum):

Die Befehlszuordnung Softkeys folgen folgende Regeln:

rechten Softkey: Es kann nur sein, ein "negativer" Befehl (STOP, CANCEL, ZURÜCK, BEENDEN in dieser Prioritätsreihenfolge) dem rechten Softkey zugeordnet, und der dort gemappte Befehl wird direkt durch Drücken der Softkey-Taste aufgerufen.

Linkser Softkey: Mutiple Befehle werden unter dem linken Softkey abgebildet, in der Fall „Optionen“ Etikett in Left Softkey und Auswahl davon ist, wird ein Menü mit Befehlen öffnen. Wenn es jedoch nur einen einzigen "positiven" Befehl (OK, ARTIKEL, BILDSCHIRM oder HILFE) unter dem linken Softkey gibt, wird er direkt auf dem linken Softkey angezeigt. (Hinweis: Einige LCDUI Komponenten haben ihre eigenen Operationen , die auch unter dem linken Softkey sichtbar sind, werden so zwingt Menü Optionen.) Wenn es gibt mehr als ein negativen Befehl dieses Menü Optionen auf Left Softkey zwingen wird und die Befehle werden in der unten angegebenen Reihenfolge dargestellt.

Mittel Softkey: In der Serie 40 nur eine Einzelkontextsensitiv der Befehlstaste (OK, ITEM) auf Mitteln Softkey abgebildet. In S60 mehrere kontextsensitive Befehle (OK, ITEM) können Middle Softkey zugeordnet werden.Wenn nur ein einzelner Befehl vorhanden ist, wird dieser direkt unter dem Softkey angezeigt, andernfalls sind die Befehle im kontextsensitiven Menü sichtbar, das vom mittleren Softkey aus geöffnet wird. Normalerweise sind die gleichen Befehle, die dem Mittleren Softkey zugeordnet sind, auch im linken Softkey verfügbar (direkt oder über die Optionen Menü). Hinweis: Einige UI-Komponenten überschreiben diese Regel und platzieren die Komponente spezifische Operation direkt auf Middle Softkey. Zum Beispiel, POPUP ChoiceGroup hat "Open" -Operation in Middle Softkey.

Offensichtlich hängt dies stark von der Plattform, aber es scheint Ihre Midlet _123 als negativen Befehl angenommen, und alle andere sind auf der anderen Soft-Taste platziert.

Ich würde versuchen, die Art zu ändern und die Prioritäten setzen, wie Sie wollen ... so etwas wie diese

exit = new Command("Exit", Command.EXIT, 5); 
_123=new Command("123",Command.BACK,0); 
ABC=new Command("ABC",Command.SCREEN,3); 
sample1=new Command("Sample1",Command.SCREEN,1); 
sample2=new Command("Sample2",Command.OK,2); 

Und die Priorität von Edit_Cell-0 und seine Art zu SCREEN einstellen. Und nur hinzufügen: ITEM Befehle werden in der Regel vor platziert.

Ich hoffe, das hilft. Grüße.

+0

Vielen Dank für Ihre Antwort.U haben geändert ABC = neue Befehl ("ABC", Command.CANCEL, 3); AS ABC = neuer Befehl ("ABC", Command.SCREEN, 3); Aber ich möchte diesen Canceltyp und behalte die gleiche Reihenfolge bei. Bitte geben Sie mir eine Lösung ... – Saravanan

+0

Wenn die Plattform CANCEL-Befehle nach SCREEN-Befehlen platziert, gibt es nicht viel, was Sie tun können, und da der Befehlstyp nur für die Schlüsselzuordnung und die Platzierung des Befehls ist, schlage ich vor, dass Sie das tun Das. Sie verlieren entweder das Cancel Key-Mapping (wenn Sie es tatsächlich haben) oder akzeptieren, wie die Plattform Ihre CANCEL-Befehle platziert. Es liegt an deinen Prioritäten. – mdelolmo

+0

exit = neuer Befehl ("Exit", Command.EXIT, 5); _123 = neuer Befehl ("123", Command.BACK, 0); ABC = neuer Befehl ("ABC", Command.CANCEL, 3); Beispiel1 = neuer Befehl ("Sample1", Command.SCREEN, 1); sample2 = neuer Befehl ("Sample2", Command.OK, 2); Aber es zeigt so., Sample1, Sample2, Exit, ABC, Edit_Cell.Aber ich brauche die folgende Reihenfolge: Edit_Cell, Sample1, Sample2, ABC, Exit. Bitte beachten Sie Edit_Cell in einer anderen Quelldatei erklärt und in diesem Formular zur Laufzeit hinzugefügt ... Erwarten Sie Ihre wertvolle Antwort und danke, dass Sie mehr Zeit für mich nehmen ... – Saravanan