![]() |
Programování v jazyce Java - J2MEKurz programování v Javě pro mobilní telefony - 3. díl |
||||||
Úvodem | Kurz programování v Javě | Kurz programování v Javě pro mobilní telefony | Soubory ke stažení | Otázky a odpovědi |
|||||||
Úvod Vítejte u třetího dílu kurzu programování pro mobilní telefony. V tomto díle probereme grafické uživatelské rozhraní (GUI) a vytvoříme program, ve kterém použijeme všechny věci, které se naučíme. Grafikcé uživatelské rozhraní Konfigurace CLDC, kterou využívají mobilní telefony nedefinuje grafické uživatelské prostředí. Z toho vyplývá, že GUI je specifikováno až v profilu MIDP. Na počítačích se pro tvorbu GUI využívají třídy balíku AWT a Swing, ale pro malé zařízení, jako jsou mobilní telefony nejsou tyto třídy úplně idelání, například proto, že tyto třídy bylo tvořeny pro použití na "normálních" počítačích s velkým displejem, které mají klávesnici a myš. U mobilních telefonů nic jako myš nenajdeme. Bylo by také zbytečné používat tolik tříd, které by zabíraly mnoho paměti, když by se stejně nevyužily. Proto vznikly vlastní třídy, které lze využít pro tvorbu GUI na mobilních telefonech. Máte na výběr mezi používáním vysokoúřovňových komponent nebo používání nízkoúrovňových. Ještě jedna možnost vlastně a to používání obou dohromady, to neznamená, že by polovina formuláře bylo pomocí vysokoúrovňovéh a zbytek pomocí nízkoúrovňového, ale že by některé obrazovky bylo vytvořeny pomocí jednoho a zbylé pomocí druhého. Vysokoúřovňové komponenty jsou dobré pro programy, které poběží na mnoha odlišných zařízeních podporující MIDP, protože jsou dobře přenositelné a měly by fungovat všude stejně. Za přenositelnost ale budete muset zaplatit tím, že nejdou vytvářet vlastní komponenty a ani moc nastavovat ty stávající. To neznamená, že vysokoúrovňové API je nepoužitelné, ale spíše to, že všechny vaše aplikace budou vlastně vypadat stejně, protože používají stejné prvky. Pokud budete například vytvářete hry a nepožadujete aby vaše hra běžela na všech dostupných telefonech na trhu stejně, i když je možnost udělat více druhů pro různé telefony, aby na každém vypadala co nejlépe, tak právě pro váš je tu nízkoúrovňové API. Je to takový opak vysokoúřovňového API, máte plnou kontrolu nad tím co se bude zobrazovat, musíte vše umístit a nastavit. Dá to sice více práce, ale výsledek stojí za to, protože můžete uděláte aplikaci, která bude vypadat úplně jinak, než při použití vysokoúrovňových komponent. Jak jsem ale psal, tak přenositelnost nemusí být moc dobrá, ale zase pokud budete například dělat programy pro telefony od jedné značky, které budou mít podobně velký displej a podobný hardware, tak to zase takový problém nebude. Vysokoúrovňové API Výklad začneme u vysokoúrovňového API, protože je na začátek jednodušší a také kvůli tomu, že mají společné věci i s nízkoúrovňovými komponentami. Základem zobrazování je třída javax.microediton.lcdui.Display ze které můžete získat mnoho informací o zobrazovacím zařízení, například výšku a šířku displeje. Důležitou metodou pro nás je metoda setCurrent(), pomocí které se zobrazují objekty, které chceme zobrazit. Abstraktní třída javax.microedition.lcdui.Screen je základem pro zobrazování GUI vysokoúrovňového API. Má čtyři potomky (podtřídy) a to Alert, Form, List a TextBox. Alert zobrazuje různá hlášení, třeba informační, chybové atd. Form je vlastně kontejnerová komponenta do které se přidávají další komponenty, které jsou potomky abstraktní třídy javax.microedition.lcdui.Item. List zobrazuje seznam položek, které můžou mít textový popis a obrázek. Poslední TextBox zobrazí přes celou obrazovku oblast pro psaní textu. Následující příklad je příkladem, který byl v minulém díle, ale teď se na něj podíváme z jiného pohledu, protože už rozumíme všem věcem v něm
Na začátku programu jsou deklarovány dvě proměnné třídy, jedna je typu Display a druhá typu TextBox. Třída Display, jak jsme si řekli, odkazuje na displej zařízení a třídu TextBox lze zobrazit na displeji. Metoda startApp() začíná inicializací objektu display a to voláním statické metody třídy Display, která vrací odkaz na displej zařízení. Je důležité provést tuto inicializaci až metodě startApp() a ne třeba v konstruktoru, protože podle specifikací musí metoda getDisplay() vracet aktuální odkaz až v metodě startApp(). Dále je tu inicializace proměnné textBox. Nakonec voláme metodu setCurrent(), pro zobrazení proměnné textBox. Následující příklad bude skoro stejný, ale s tím rozdílem, že pro zobrazení použijeme objekt třídy List, která na displeji telefonu zobrazí seznam.
Příklad ukazuje použití další přímo zobrazovatelné komponenty a tou je List. V konstruktoru specifikujete název seznamu a jeho typ. Dále už jen přidává položky, které mají název, ale neobsahují obrázek, proto druhý argument metody append() obsahuje null. Závěr V tomto díle jsme trochu začali používat vysokoúrovňové API pro grafické uživatelské prostředí. Příště již podrobně rozeberu jednotlivé komponenty, jejich konstruktory a metody. Těším se u dalšího dílu na shledanou. |
|||||||