Java Micro: Form
Die Klasse Form ist eine Sammlung von Items die auf diesem abgebildet werden können. Diese Items unterscheiden sich Teilweise nur minimal von anderen High-Level-API Elementen. So gibt es in Forms auch eine CoiceGroup, die wie List funktioniert, oder ein TextField, welches faktisch das selbe ist wie eine TextBox. Das Form bildet die Unterlage auf der die verschiedenen Itemelemente gelegt werden können. Mit der Methode append(Item item)
kann ein Item an ein Form angehängt oder durch set(int Index, Item Item)
an einen bestimmten Index gesetzt werden.
Die Item-Typen
BearbeitenEs existieren acht verschiedene Item-Typen, welche für verschiedene Aufgaben eingesetzt werden können. Sie können zur einfachen Ausgabe von Strings, Bildern, Fortschrittsbalken, ect. Es können darüber hinaus einfache Eingabemethoden von Daten, String oder auch Auswahlmenüs für die Nutzer_innen erstellt werden. Zusätzlich ist es möglich mit dem CustomItem eigene Items zu erstellen, die sich in Funktionen und/oder auch Aussehen von dennen durch die von der javax.microedition.lcdui bereitgestellten unterscheiden können.
StringItem
BearbeitenDieses Item wird dazu verwendet Titel oder Text auf dem Bildschirm anzuzeigen. Ein StringItem kann von den User_innen nicht verändert werden. Die meistgenutzte variante Formitems, also auch StringItems zu erstellen, ist die Nutzung des Konstruktors. Welche wie folgt aussieht:
StringItem(String label, String text, int appearanceMode)
Hierbei wird zwischen drei "appearanceModes" unterschieden. Es besteht aus "PLAIN", "HYPERLINK" und BUTTON. Wobei "PLAIN" das Standartaussehen, "HYPERLINK" den Text als hyperlink erscheinen lässt und "BUTTON zeigt den Text als Button auf dem Bildschirm. Darüber hinaus verfügt das StringItem nur über eine kleine Anzahl von set/get-Funktionen.
DateField
BearbeitenDas DateField bietet den Nutzer_innen die Möglichkeit das Datum und/oder die Uhrzeit einzugeben. Hier wird in folgende drei Modies unterschieden: DATE, TIME, DATE/TIME. Der Konstruktor sieht wie folgt aus:
DateField(String label, int mode)
TextField
BearbeitenZur Eingabe von Text in ein Feld. Siehe Kapitel "Die Klasse TextBox"
ChoiceGroup
BearbeitenDieses Item gibt den Nutzer_innen die Möglichkeit zwischen verschiedenen Elementen zu wählen. Siehe Kapitel "Die Klasse List"
Spacer
BearbeitenDer Spacer is ein leeres nicht interaktives Item, des zwischen andere Items gepackt werden kann. Es verfügt im wesentlichen nur über eine Methode zur Veränderung der Größe, wobei der Konstruktor:
Spacer(int minWidth, int minHeight)
hierfür in den meisten Fällen genügen sollte. Darüber hinaus kann mit der Funktion:
setMinimumSize(int minWidth, int minHeight)
die minimale Größe des Items gesetzt werden.
Gauge
BearbeitenEin Gauge kann als Interaktives Bild verstanden werden. Häufig wird es zur Darstellung von Fortschrittsbalken oder als Lautstärkeregler eingesetzt.
Gauge(String label, boolean interactive, int maxValue, int initialValue)
Interaktive Mode | Beschreibung |
---|---|
CONTINUOUS_IDLE | Ruhezustand, nicht Interaktiv, undefinierte Reichweite |
CONTINUOUS_RUNNING | laufender Betrieb, nicht Interaktiv, undefinierte Reichweite |
INCREMENTAL_IDLE | The value representing the incremental-idle state , nicht Interaktiv, undefinierte Reichweite |
INCREMENTAL_UPDATING | The value representing the incremental-updating state of a non-interactive Gauge with indefinite range |
INDEFINITE | A special value used for the maximum value in order to indicate that the Gauge has indefinite range |
Mit der Übergabe der Werte int maxValue()
und int initialValue()
können der maximale Wert und der momentane Wert des Gauge angegeben werden.
form1 = new Form("Adressbuch Teil 1"); gauge = new Gauge("Seite 1 von 3", false, 3, 1); form1.append(gauge);
ImageItem
BearbeitenDieses Item liefert eine Referenz auf Bildobjekt. Auch ein ImageItem ist meist allein über den Konstruktor implementierbar.
ImageItem(String label, Image img, int layout, String altText)
Erstellt ein neues ImageItem mit einem Label, einem Bild, ein gewünschtes Layout(siehe Layout) und einem Text, welcher angezeigt wird falls es zu Problemen mit der Anzeige kommt. Zum Beispiel wenn das Device nicht genügend Speicher zur Verfügung steht um dieses Bild anzuzeigen. Wichtig ist das, das von J2ME unterstützte Dateiformat für Bilder .png ist.
CustomItem
BearbeitenMit CustomItem ist es Programmierer_Innen möglich eine eigene Subklasse mit selbstdefiniertem Aussehen, Interaktivität und Benachrichtigungsmechanismus zu erstellen.
nähere Erläuterung und Beispiel folgen
Layout
BearbeitenZusätzlich besteht die Wahl zwischen einer Reihe von Layouts, die dabei helfen sollen die Darstellung attraktiver zu gestalten. Die Layouts können beliebig Kombiniert werden um zu noch besseren Ergebnissen zu gelangen. Das setzen des Layouts wird mit der Funktion setLayout(int)
und das Zusammenfassen durch den Operator "OR" bzw. "|" gelöst.
Es wird unter den folgenden Layouts Unterschieden:
- LAYOUT_DEFAULT
Dies ist das Standart-Layout mit dem Wert null. Dies bedeutet auch in Kombination mit anderen Layouts wird der Effekt nicht vom Default abweichen.
- LAYOUT_LEFT
- LAYOUT_RIGHT
- LAYOUT_CENTER
LEFT,RIGHT und CENTER beeinflussen die Anordnung der Items auf der horizontalen Ebene.
- LAYOUT_TOP
- LAYOUT_BOTTOM
- LAYOUT_VCENTER
Beeinflussen die Anordnung auf der vertikaler Ebene.
- LAYOUT_NEWLINE_BEFORE
- LAYOUT_NEWLINE_AFTER
Setzt davor bzw. danach eine leere Zeile("\n").
- LAYOUT_SHRINK
- LAYOUT_VSHRINK
Verkleinern des Items in horizontaler bzw. vertikaler Richtung.
- LAYOUT_EXPAND
- LAYOUT_VEXPAND
Vergrößern des Items in horizontaler bzw. vertikaler Richtung.
- LAYOUT_2
erlaubt neue MIDP2.0 Effekte für dieses Item
Size
BearbeitenDie Klasse Form und die dazugehörigen Items können auch in ihrer größer verändert werden. Im Default ist es so das die Items in der kleinstmöglichen Größe angezeigt werden und sich mit dem Inhalt erweitern. Es ist aber auch von vornherein konfigurierbar. Dafür wird die Funktion setPreferredSize(int width,int height)
. Somit kann auch nur eine Richtung als erweiterbar definiert werden.
setPreferredSize(-1,50)
Dieses Beispiel würde das gewählte Item, durch den Wert -1, in horizontaler Richtung veränderbar machen und in der Vertikalen auf 50 Pixel beschränken.
Code Beispiel
BearbeitenHier ein Beispielform mit allen Elementen außer dem CustomItem:
import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; public class BeispielForm extends MIDlet { private Form form; private Gauge gauge; private Spacer spacer; private ImageItem imageItem; private TextField txtField; private DateField dateField; private StringItem stringItem; private ChoiceGroup choiceGroup; public BeispielForm() { form = new Form("Kundendaten"); // StringItem sind nicht editierbar stringItem = new StringItem("Bitte geben sie hier ihre Daten an",null); form.append(stringItem); // dataField zur Datumsangabe dateField = new DateField("Ihr Geburtstag: ", DateField.DATE); form.append(dateField); // wie eine TextBox txtField = new TextField( "Ihr Name: ", "", 50, TextField.ANY); form.append(txtField); // wie eine Liste choiceGroup = new ChoiceGroup( "Geschlecht wählen", Choice.EXCLUSIVE, new String[] {"M", "W"}, null); form.append(choiceGroup); // um Fortschritt zu zeigen gauge = new Gauge("Seite 1 von 3", false, 3, 1); form.append(gauge); // ein Platzhalter zur Übersichtlichkeit einfügen spacer = new Spacer(20, 20); form.append(spacer); // um den Fehler abzufangen, das eventuell // das Bild nicht gefunden wird, wird // eine Exception genutzt try { imageItem = new ImageItem( "Im Auftrag von: ", Image.createImage("/OO.gif"), ImageItem.LAYOUT_DEFAULT, "OO"); form.append(imageItem); } catch(Exception e) {} } public void startApp() { Display display = Display.getDisplay(this); display.setCurrent(form); } public void pauseApp() {} public void destroyApp(boolean unconditional) {} }