Java Micro: Textbox

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Die TextBox ist eine Klasse die es den Nutzer_Innen ermöglicht Text in ein J2ME Programm einzugeben. Diese Klasse ist ähnlich wie die Klasse Alert nicht sonderlich umfangreich, besitzt aber dennoch ihre Tücken. Sie bietet umfangreiche Funktionen für die Manipulation der Eingabe und hilft die Nutzer_Innen einzuschränken, in dem Was bzw. Wieviel eingegeben werden kann. Bei dem Was unterscheidet J2ME in sechs Arten. Welche durch die Funktion setConstraints() oder dem Konstruktor gesetzt werden können.

Arten Beschreibung
ANY alles wird akzeptiert
EMAILADDR nur e-mail Adressen werden akzeptiert
NUMERIC nur Zahlen werden akzeptiert
PHONENUMBER nur Telefonnummern werden akzeptiert
URL nur URL's werden akzeptiert
DECIMAL NUMERIC plus "-","." ect. werden akzeptiert

Zusätlich gibt es sechs verschiedene Anzeigearten der Eingaben.

Arten Beschreibung
PASSWORD für Eingaben die nichtlesbar seien sollen
UNEDITABLE nicht editierbar
SENSITIVE für Eingaben die niemals gespeichert werden, in Wörterbüchern oder ähnliches. z.B. Kreditkartennummern
NON_PREDICTIVE für Text der Warscheinlich nicht in Wörterbüchern auftaucht und somit Zeichen für Zeichen eigegeben werden muss
INITIAL_CAPS_WORD Anfangsbuchstaben jedes Wortes werden groß geschrieben
INITIAL_CAPS_SENTENCE Anfangbuchstaben eines Satzes werden groß geschrieben

Diese können auch durch logische Verknüpfungen kombiniert werden. Hier ein Beispiel:

setConstraints(TextField.EMAILADDR | NON_PREDICTIVE);

Dies ist eine Mögliche Kombination die nur e-mail Adressen akzeptiert und den Nutzer_Innen eine leichte Eingabe ermöglichen soll. Um Limits für die Maximale Zeichenanzahl zu setzen wird die Methode setMaxSize(int size) genutzt. Der maximal Eingabestring kann aber auch durch das Device beschränkt sein. So gibt es Geräte die nicht mehr als 32 Zeichen akzeptieren. Diese Parameter können aber auch durch den Konstruktor an die TextBox übergeben werden. Wie bei den Alerts, ist der Konstruktor auch bei der TextBox sehr mächtig.

TextField(String label, String text, int maxSize, int constraints);

Über ihn können alle wichtigen Parameter für eine TextBox übergeben werden.

Weitere Methoden dieser Klasse sind z.B. setString(String text) welche einen String in die Box einfügt. Einzelne Buchstaben können auch mit der Hilfe von insert(String text, int position) eingefügt werden.

Hier ein Beispiel für eine Implementierung einer Textbox:

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class TextBoxBeispiel extends MIDlet {
    private TextBox textBox1; // definiert textBox1 vom Typ TextBox
  public TextBoxBeispiel() {
    textBox1 = new TextBox("Ihr Name?", 
    "Bitte geben sie ihren Geburtsnamen ein:",
    60,
    TextField.INITIAL_CAPS_WORD | TextField.NON_PREDICTIVE);
  /*hier wird textBox1 erstellt mit der Überschrift und
  dem Text zur Eingabeaufforderung. Sie bietet Platz für 60 Zeichen. */
  }
  public void startApp() {
       Display display = Display.getDisplay(this); 
       display.setCurrent(textBox1); //bringt textBox1 zur Anzeige
       txtBox1.setString("Max Mustermann"); //setzt einen String in die TexBox
  }
  public void pauseApp() {}
  public void destroyApp(boolean unconditional) {}
}