|
Ein Textfeld dient der einzeiligen Eingabe eines beliebigen Textes durch den Benutzer. Da im wesentlichen alle Funktionen des Textelementes (siehe voriges Kapitel) auch auf das Textfeld anwendbar sind, wird hier nur kurz auf zusätzliche Funktionen eingegangen. Das folgende Beispiel stellt ein login Dialogfenster dar:
/* Example textfield.c */ : login = j_textfield(frame,35); passwd = j_textfield(frame,35); : j_setechochar(passwd,'*'); while(1) { : if(obj==login) { j_gettext(login,inhalt); printf("Your name is %s\n",inhalt); } if(obj==passwd) { j_gettext(passwd,inhalt); printf("Your password is %s\n",inhalt); } if(strcmp(inhalt,"exit")==0) break; } :
Da Textfelder nur einzeilig sind, besitzt der Funktionsaufruf dieses Elements auch nur einen Parameter zur Angabe der sichtbaren Spalten:
j_textfield(frame,n_spalten);
Obwohl Textfelder keine Scrollbars besitzen, kann ein überlanger Text im Sichtfenster gescrollt werden, da der Textcursor immer im sichtbaren Bereich bleibt.
Ein Textfield meldet erst dann einen Event, wenn die Eingabe in das Feld durch drücken der Return Taste bestätigt wurde. Dennoch kann jederzeit der Inhalt des Feldes mit der Prozedur j_gettext() ermittelt werden
Soll, z.B. bei Eingabe eines Passwords, kein erkennbarer Text angezeigt werden, so kann mit der Funktion
j_setechochar(passwd,'*');
ein sogenanntes ''echo character'' angegeben werden. Im Beispiel wird also in der Password Zeile für jedes eingetippte Zeichen ein Asterix dargestellt. Denoch entspricht der Inhalt des Textfeldes genau der eingetippten Zeichenfolge. Im Beispiel kann im Password Feld die Zeichenfolge ''exit'' eingetippt werden, um die Applikation zu beenden.