J2ME v příkladech – uživatelský vstup
Obsahem předešlých článků byla tvorba úvodní obrazovky midletů a také tvorba nabídek neboli menu. V tomto článku se naučíme pracovat s uživatelskými daty, které jsou zadány v průběhu aplikace.
K čemu je to vlastně dobré?
Zpracování uživatelských dat je dnes již základním předpokladem všech aplikací. Mezi nejběžnější příklady patří používání e-mailových klientů nebo různých textových editorů. Komponenty pro zpracování uživatelských dat jsou samozřejmě i součástí aplikací pro mobilní telefony.
Možnosti mobilních aplikací
Mikroedice programovacího jazyka Java obsahuje dvě komponenty pro vkládání uživatelských dat. Jsou to komponenty TextBox
a TextField
. Komponenta TextBox
je potomek třídy Screen
a může být umístěn na displej samostatně, naproti tomu TextField
je potomkem třídy Item
a musí být umístěn na takzvaný formulář (Form
). Formulář je komponenta, která může obsahovat libovolné položky – obrázky, text, textové pole nebo skupiny prvků pro výběr z nabídky (List
). V následujícím příkladě si ukážeme, jak používat formulář ve spojení s textovými poli. Vytvoříme si formulář, který může sloužit jako přihlašovací formulář do aplikace, a ukážeme si možnosti třídy TextField
.
Třída TextField
má následující konstruktor:
TextField textove_pole = new TextField(String nadpis, String obsah, int velikost, omezeni);
Nadpis je textová položka, která je zobrazena nad textovým polem. Je to jen informativní popisek pro uživatele. Může obsahovat informaci o formátu dat, která mají být zadána do daného pole. Obsah je řetězec, který se zobrazí v textovém poli. Uživatel ho při editaci pole může buď upravit, nebo úplně smazat. Dá se využít jako pomůcka, například v poli pro e-mailovou adresu může být umístěn znak @ a uživatel ho tedy při vkládání e-mailové adresy nemusí hledat na klávesnici mobilního telefonu. Velikost je celé číslo vyjadřující maximální počet znaků, které může uživatel do textového pole vložit. Omezení určuje jaké vstupní údaje může uživatel vložit, parametry jsou následující:
- TextField.ANY umožňuje vložit jakýkoliv řetězec. Tomuto „omezovači“ je přiřazena hodnota 0.
- TextField.EMAILADDR umožňuje vložit e-mailovou adresu. Jeho hodnota je 1.
- TextField.NUMERIC omezí vložené znaky pouze na čísla. Má hodnotu 2.
- TextField.PHONENUMBER umožní vložení telefonního čísla. Jeho hodnota je 3.
- TextField.URL je určen pro vkládání internetové adresy a má hodnotu 4.
- TextField.PASSWORD zakryje vložené znaky hvězdičkami. Je určen pro vkládání hesla a jeho hodnota je 0x10000.
Za zmínku ještě stojí možnost kombinování omezovače TextField.PASSWORD
s ostatními. Lze ho kombinovat pomocí operátoru OR. Chceme-li například vytvořit textové pole, které umožní vložit pouze čísla a navíc bude skryto před okolím, můžeme použít konstruktor TextField tf = new TextField("Cislo", "", 20, TextField.NUMERIC|TextField.PASSWORD);
. Takto vytvořené textové pole umožní vložit pouze čísla a navíc vložené znaky nahradí hvězdičkami.
Teď už víme, jak vytvořit textové pole, které bude vyhovovat našim potřebám. Můžeme se tedy hned pustit do tvorby přihlašovacího formuláře. Ten bude obsahovat dvě textová pole, tlačítko pro přihlášení a vyhodnocení vložených údajů. Zdrojový kód je následující:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Abc extends MIDlet implements CommandListener {
Display disp;
Form frm_login; // vytvoření formuláře na kterém budou textová pole
Form frm_result;
TextField tf_login; // textové pole pro přihlašovací jméno
TextField tf_pwd; // textové pole pro heslo
Command cmd_login;
Command cmd_konec;
StringItem si_prihlaseni; // textová položka pro zobrazení výsledku přihlášení
public Abc() {
cmd_login = new Command(„Login“, Command.SCREEN, 1);
cmd_konec = new Command(„Konec“, Command.SCREEN, 1);
tf_login = new TextField(„Jmeno“, „“, 20, TextField.ANY); // pole pro jméno
tf_pwd = new TextField(„Heslo“, „“, 20, TextField.PASSWORD); // pole pro heslo
si_prihlaseni = new StringItem(„“, „“);
frm_login = new Form(„Login“); // vytvoření přihlašovacího formuláře
frm_login.append(tf_login);
frm_login.append(tf_pwd);
frm_login.addCommand(cmd_login);
frm_login.addCommand(cmd_konec);
frm_result = new Form(„Prihlaseni“);
}
public void startApp() {
disp = Display.getDisplay(this);
frm_login.setCommandListener(this);
disp.setCurrent(frm_login);
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) {
notifyDestroyed();
}
public void commandAction(Command c, Displayable d) {
if(c == cmd_konec) { notifyDestroyed(); }
if(c == cmd_login) { login(); }
}
public void login() {
String jmeno = tf_login.getString(); // zjištění hodnoty textových polí a
String heslo = tf_pwd.getString(); // zpracování jejich obsahu
if(jmeno.equals(„jarda“) && heslo.equals(„patek“)) {
prihlaseni(1);
} else {
prihlaseni(0);
}
}
public void prihlaseni(int vysledek) {
switch(vysledek) {
case(1): // správné jméno i heslo
si_prihlaseni.setText(„Prihlaseni je v poradku :o)“);
break;
case(0): // nesprávné jméno nebo heslo
si_prihlaseni.setText(„Prihlaseni je neplatne !“);
break;
}
frm_result.append(si_prihlaseni);
frm_result.addCommand(cmd_konec);
frm_result.setCommandListener(this);
disp.setCurrent(frm_result);
}
}
Midlet běžící na mobilním telefonu Nokia 6310i…
…a zde na mobilním telefonu Siemens C55.
Midlet nejprve vytvoří textová pole, která následně umístí na formulář frm_login
. Po stisku tlačítka LOGIN je provedena kontrola vložených údajů a podle výsledku kontroly je zavolána metoda prihlaseni()
s parametrem 1 v případě platného přihlášení, nebo s parametrem 0 v případě špatně zadaných přihlašovacích údajů. Text z textového pole získáme metodou getString()
. Zde je přehled několika užitečných metod pro práci s textovým polem:
getChars(char[] pole)
vrátí obsah jako pole[] znaků indexované od nulygetMaxSize()
vrátí celé číslo, které určuje maximální velikost textu vloženého do textového poleinsert(String text, int misto)
vloží do textového pole řetězec „text“ na pozici „misto“setLabel(String nadpis)
nastaví popisek textového pole na hodnotu „nadpis“setString(String text)
nastaví obsah textového pole na hodnotu „text“
Popis všech metod můžete získat v manuálu přiloženém k Wireless Toolkitu od firmy Sun. Jsou vesměs totožné s metodami pro komponentu TextBox
, která se liší hlavně tím, že ji lze umístit na displej samostatně bez použití formuláře.
Užitečné zdroje
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Jak zabezpečit váš chytrý telefon před kybernetickými hrozbami
30. listopadu 2023 -
Vstupte do éry umělé inteligence: ASOME Max Studio s AMD Ryzen™ 9 7940HS
14. listopadu 2023 -
AI v programování: Jak používat GitHub Copilot (část 1)
12. února 2024 -
Zabezpečení e-mailů: Jak můžete chránit vaši firemní komunikaci
13. prosince 2023
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024