public class MojMidlet extends MIDlet {
private Display display;
private Form form;
private Command exitCommand = new Command("Wyjdz", Command.EXIT, 1);
public void startApp() {
form = new Form("Jakis tekst");
form.append("Pierwszy MIDlet");
form.addCommand(exitCommand);
display = Display.getDisplay(this);
display.setCurrent(form);
}
...
Command(String Etykieta, int TypKomendy, int Priorytet)
Pamiętajmy o zaimportowaniu klasy wciskając CTRL+SHIFT+I (Fix Imports).
Następnie dodajemy komendę do istniejącej juz formy używając metody addCommand(Command komenda) i po uruchomieniu naszego midletu zobaczymy komendę "Wyjdź" która... nie działa.
Tutaj z pomocą idzie interfejs CommandListener, który nasz midlet musi implementować
public class MojMidlet extends MIDlet implements CommandListener {
private Display display;
...
CommandListener posiada tylko jedną metodę która obsługuje naszą komendę , więc dopiszmy ją na końcu naszego kodu
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
}
Widzimy, że spełnienie warunku (c == exitCommand) owocuje zakończeniem midletu. Oczywiście posiadając tylko jedną komendę warunek bedzie zawsze spełniony.
Ostatnim krokiem będzie dodanie instrukcji setCommandListener do naszego programu w metodzie startApp() bez której commandAction nie zostałaby wywołana.
public void startApp() {
form = new Form("Jakis tekst");
form.append("Pierwszy MIDlet");
form.addCommand(exitCommand);
form.setCommandListener(this);
...
Można teraz smiało uruchomić midlet i sprawdzić poprawność działania naszej komendy.
Dodajmy jeszcze dwie komendy napiszCommand dodającą na ekranie tekst i czyscCommand, po której wciśnieciu nasza forma zostanie wyczyszczona. Zasada jest identyczna jak w przypadku exitCommand
private Command exitCommand = new Command("Wyjdz", Command.EXIT, 1);
private Command dodajCommand = new Command("DodajTxt", Command.OK, 1);
private Command czyscCommand = new Command("Czysc", Command.OK, 1);
public void startApp() {
form = new Form("Jakis tekst");
form.append("Pierwszy MIDlet");
form.addCommand(dodajCommand);
form.addCommand(czyscCommand);
form.addCommand(exitCommand);
form.setCommandListener(this);
...
Zostaje nam tylko zmodifikować commandAction o dodane komendy
public void commandAction(Command c, Displayable d) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
} else if (c == dodajCommand) {
form.append("Dodany tekst\n");
} else if (c == czyscCommand) {
form.deleteAll();
}
}
Metoda deleteAll() klasy Form usuwa wszystkie rzeczy umieszczone na danej formie, w tym przypadku wpisane teksty.
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.midlet.*;
public class MojMidlet extends MIDlet implements CommandListener {
private Display display;
private Form form;
private Command exitCommand = new Command("Wyjdz", Command.EXIT, 1);
private Command dodajCommand = new Command("DodajTxt", Command.OK, 1);
private Command czyscCommand = new Command("Czysc", Command.OK, 1);
public void startApp() {
form = new Form("Jakis tekst");
form.append("Pierwszy MIDlet");
form.addCommand(dodajCommand);
form.addCommand(czyscCommand);
form.addCommand(exitCommand);
form.setCommandListener(this);
display = Display.getDisplay(this);
display.setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
} else if (c == dodajCommand) {
form.append("Dodany tekst\n");
} else if (c == czyscCommand) {
form.deleteAll();
}
}
}