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. |
|||||||