Idag: Mera användargränssnitt med List och Form |
Klicka på startknappen i den lilla mediespelaren ovan för att lyssna på lektionen. (Man kan behöva vänta en stund på att ljudfilen laddas ner.) Om mediespelaren inte syns, eller om det inte fungerar av något annat skäl, kan man klicka här för att ladda ner mp3-filen (ca 30 minuter, ca 14 megabyte). Beroende på hur webbläsaren är konfigurerad kan det kräva ett separat mp3-spelarprogram av något slag.
Tänk på att lektionerna ger en översikt och introduktion. Du måste läsa i kursboken och arbeta med övningarna för att tillgodogöra dig kursen. |
Det finns enkelvalslistor (EXCLUSIVE), flervalslistor (MULTIPLE) och direktvalslistor (IMPLICIT).
![]() |
![]() |
1 import javax.microedition.midlet.*; 2 import javax.microedition.lcdui.*; 3 4 public class ExclusiveListTest extends MIDlet implements CommandListener { 5 private Display displayen; 6 private List listan; 7 private TextBox textrutan; 8 private Command exitkommandot, okkommandot; 9 10 public ExclusiveListTest() { 11 listan = new List("Välj ett av följande alternativ", Choice.EXCLUSIVE); 12 okkommandot = new Command("OK", Command.OK, 1); 13 exitkommandot = new Command("Avsluta", Command.EXIT, 0); 14 textrutan = new TextBox("Resultat", "Inget resultat", 100, 0); 15 listan.append("Tripp", null); 16 listan.append("Trapp", null); 17 listan.append("Trull", null); 18 listan.append("Stora Svampen", null); 19 20 listan.addCommand(okkommandot); 21 listan.addCommand(exitkommandot); 22 listan.setCommandListener(this); 23 24 textrutan.addCommand(exitkommandot); 25 textrutan.setCommandListener(this); 26 } 27 28 public void startApp() { 29 displayen = Display.getDisplay(this); 30 displayen.setCurrent(listan); 31 } 32 33 public void commandAction(Command kommandot, Displayable s) { 34 if (kommandot == exitkommandot) { 35 destroyApp(false); 36 notifyDestroyed(); 37 } 38 else if (kommandot == okkommandot) { 39 int valet; 40 displayen.setCurrent(textrutan); 41 valet = listan.getSelectedIndex(); 42 textrutan.setString("Du valde alternativ nummer " + 43 valet + 44 ", \"" + 45 listan.getString(valet) + "\".\n"); 46 } 47 } 48 49 public void destroyApp(boolean unconditional) { } 50 51 public void pauseApp() { } 52 } // class ExclusiveListTest |
1 import javax.microedition.midlet.*; 2 import javax.microedition.lcdui.*; 3 4 public class MultipleListTest extends MIDlet implements CommandListener { 5 private Display displayen; 6 private List listan; 7 private TextBox textrutan; 8 private Command exitkommandot, okkommandot; 9 10 public MultipleListTest() { 11 listan = new List("Välj några av följande alternativ", Choice.MULTIPLE); 12 okkommandot = new Command("OK", Command.OK, 1); 13 exitkommandot = new Command("Avsluta", Command.EXIT, 0); 14 textrutan = new TextBox("Resultat", null, 200, 0); 15 listan.append("Tripp", null); 16 listan.append("Trapp", null); 17 listan.append("Trull", null); 18 listan.append("Stora Svampen", null); 19 20 listan.addCommand(okkommandot); 21 listan.addCommand(exitkommandot); 22 listan.setCommandListener(this); 23 24 textrutan.addCommand(exitkommandot); 25 textrutan.setCommandListener(this); 26 } 27 28 public void startApp() { 29 displayen = Display.getDisplay(this); 30 displayen.setCurrent(listan); 31 } 32 33 public void commandAction(Command kommandot, Displayable s) { 34 if (kommandot == exitkommandot) { 35 destroyApp(false); 36 notifyDestroyed(); 37 } 38 else if (kommandot == okkommandot) { 39 boolean[] valen = new boolean[listan.size()]; 40 displayen.setCurrent(textrutan); 41 int antalet; 42 antalet = listan.getSelectedFlags(valen); 43 textrutan.setString("Du valde " + antalet + " alternativ.\n"); 44 45 for (int i = 0; i < listan.size(); ++i) { 46 if (valen[i]) 47 textrutan.insert("Du valde alternativ nummer " + 48 i + 49 ", \"" + 50 listan.getString(i) + "\".\n", 51 textrutan.getString().length()); 52 } 53 } 54 } 55 56 public void destroyApp(boolean unconditional) { } 57 58 public void pauseApp() { } 59 } // class MultipleListTest |
![]() |
![]() |
![]() DefaultColorPhone (240 x 320) |
![]() (176 x 220) |
![]() (96 x 54) |
1 import java.io.*; 2 import javax.microedition.midlet.*; 3 import javax.microedition.lcdui.*; 4 5 public class FormTest extends MIDlet implements CommandListener { 6 private Display displayen; 7 private Form formuläret; 8 private Command exitkommandot, okkommandot; 9 10 public FormTest() { 11 formuläret = new Form("Några olika Item-objekt i ett formulär"); 12 13 StringItem etiketten = new StringItem("Namn: ", "FormTest"); 14 etiketten.setLayout(Item.LAYOUT_2); 15 formuläret.append(etiketten); 16 17 Spacer tomrummet = new Spacer(10, 50); 18 tomrummet.setLayout(Item.LAYOUT_2); 19 formuläret.append(tomrummet); 20 21 TextField textfältet = new TextField("Skriv nånting här:", 22 " |
![]() |
![]() |
![]() |
1 import java.io.*; 2 import javax.microedition.midlet.*; 3 import javax.microedition.lcdui.*; 4 5 public class GaugeTest1 extends MIDlet implements CommandListener { 6 private Display displayen; 7 private Form formuläret; 8 Gauge mätaren; 9 StringItem texten; 10 private Command uppdateringskommandot; 11 private Command exitkommandot; 12 13 public GaugeTest1() { 14 formuläret = new Form("En mätare och ett textfält, alternativ 1"); 15 16 mätaren = new Gauge("Ställ in", true, 5, 3); 17 formuläret.append(mätaren); 18 19 texten = new StringItem("Värde: ", null); 20 formuläret.append(texten); 21 22 uppdateringskommandot = new Command("Uppdatera", Command.SCREEN, 1); 23 formuläret.addCommand(uppdateringskommandot); 24 25 exitkommandot = new Command("Avsluta", Command.EXIT, 0); 26 formuläret.addCommand(exitkommandot); 27 28 formuläret.setCommandListener(this); 29 commandAction(uppdateringskommandot, formuläret); 30 } 31 32 public void startApp() { 33 displayen = Display.getDisplay(this); 34 displayen.setCurrent(formuläret); 35 } 36 37 public void commandAction(Command kommandot, Displayable s) { 38 if (kommandot == exitkommandot) { 39 destroyApp(false); 40 notifyDestroyed(); 41 } 42 else if (kommandot == uppdateringskommandot) { 43 texten.setText("" + mätaren.getValue()); 44 } 45 } 46 47 public void destroyApp(boolean unconditional) { } 48 49 public void pauseApp() { } 50 } // class GaugeTest1 |
![]() |
![]() |
1 import java.io.*; 2 import javax.microedition.midlet.*; 3 import javax.microedition.lcdui.*; 4 5 public class GaugeTest2 extends MIDlet 6 implements CommandListener, ItemStateListener { 7 private Display displayen; 8 private Form formuläret; 9 Gauge mätaren; 10 StringItem texten; 11 private Command exitkommandot; 12 13 public GaugeTest2() { 14 formuläret = new Form("En mätare och ett textfält, alternativ 2"); 15 16 mätaren = new Gauge("Ställ in", true, 5, 3); 17 formuläret.append(mätaren); 18 19 texten = new StringItem("Värde: ", null); 20 formuläret.append(texten); 21 22 exitkommandot = new Command("Avsluta", Command.EXIT, 0); 23 formuläret.addCommand(exitkommandot); 24 25 formuläret.setCommandListener(this); 26 27 formuläret.setItemStateListener(this); 28 itemStateChanged(mätaren); 29 } 30 31 public void startApp() { 32 displayen = Display.getDisplay(this); 33 displayen.setCurrent(formuläret); 34 } 35 36 public void commandAction(Command kommandot, Displayable s) { 37 if (kommandot == exitkommandot) { 38 destroyApp(false); 39 notifyDestroyed(); 40 } 41 } 42 43 public void itemStateChanged(Item i) { 44 if (i == mätaren) { 45 texten.setText("" + mätaren.getValue()); 46 } 47 } 48 49 public void destroyApp(boolean unconditional) { } 50 51 public void pauseApp() { } 52 } // class GaugeTest2 |
Kapitel 5 la grunderna om användargränssnitt i MIDP, och är därför ett särskilt viktigt kapitel. Kapitel 6 tar vid där kapitel 5 slutade, med fler användargränssnittskomponenter.
Här är några frågor som kan användas som instuderingsfrågor:
Föregående lektion | Lektionslista | Nästa lektion