J2ME v příkladech – kolikátého je dnes?
V předchozích článcích jsme si ukázali, jak správně sestavovat prvky pro výběr z nabídky a jak je správně kombinovat. Zatím jsme používali jen komponenty pro volbu z možností „vybráno“ nebo „nevybráno“ a také textové položky. Komponenta, o které si povíme dnes, je poměrně odlišná. Komponenta DateField se používá k zobrazení a editaci časového údaje a data.
Objekt DateField
Nejprve trochu teorie. Objekt DateField
je potomkem třídy Item
. Ti pozornější z vás už jistě tuší, co to v praxi znamená a jak mají správně tuto komponentu používat. Pro ty ostatní jen připomenu, že objekty, které jsou potomky abstraktní třídy Item
, je nutno umístit na formulář (Form
) metodou append()
.
Teď si povíme něco o vlastnostech a použití třídy DateField
. Tato komponenta představuje editovatelný objekt, který zobrazuje datum a čas. S její pomocí lze jednoduše vytvářet aplikace, které budou sloužit k operacím s datem nebo časem, jako jsou například jednoduché organizéry času nebo aplikace pro přepočet aktuálního času mezi jednotlivými časovými pásmy. Je to vysokoúrovňová komponenta, jejíž vzhled a způsob ovládání závisí plně na implementaci Javy v mobilním telefonu. Zatímco například Motorola i85s nabídne hezký kalendář, Siemens SL45i nebo Nokia 7210 zobrazí jen editovatelný řádek rozdělený tečkami pro položky data a dvojtečkami pro časový údaj. Pokud po necháme objekt DateField bez nastavení, pak nám při zjištění hodnoty data vrátí „1.1.1970 0:00:00“ neboli „zero epoch“.
DateField jako kalendář na telefonu Motorola i85s
DateField na telefonu Siemens SL45i jen jako editovatelný řádek.
Práce s komponentou DateField
je velmi jednoduchá. Nejprve pomocí konstruktoru vytvoříme instanci třídy DateField
. Konstruktor může mít dvě podoby:
DateField(String label, int mode);
// nebo
DateField(String label, int mode, TimeZone casove_pasmo);
První konstruktor pouze vytváří komponentu s popisem (label) a typem zobrazené hodnoty (mode). Pro typ zobrazované hodnoty je možno použít statické konstanty třídy DateField
, a to následující : DateField.DATE, nebo hodnotu 1, DateField.TIME nebo hodnotu 2 a DateField.DATE_TIME nebo hodnotu 3.
Druhý konstruktor obsahuje ještě něco navíc. Je to tzv. TimeZone, neboli informace o aktuálním časovém pásmu. (Pokud chceme používat abstraktní třídu TimeZone je nutno naimportovat také balíček java.util.TimeZone.) Pokud tuto hodnotu v konstruktoru vynecháme, nastaví se automaticky na výchozí časové pásmo. To je časové pásmo, ve kterém je aplikace spuštěna. Volba výchozího časového pásma vypadá následovně:
DateField df = new DateField(„Datum a cas“, DateField.DATE_TIME, TimeZone.getDefault());
Pokud ovšem chceme nastavit například greenwichský čas (GMT), použijeme metodu getTimeZone(String ID);
, která vrátí objekt TimeZone pro určené časové pásmo. Použití je opět prosté:
DateField df = new DateField(„Datum a cas“, DateField.DATE_TIME, TimeZone.getTimeZone(„GMT“));
Skupinu ID dostupných časových pásem můžeme lehce vypsat následujícím způsobem:
String ids[] = TimeZone.getAvailableIDs();
for(int a=0;a<ids.length;a++) {
System.out.println(ids[a]);
}
Určitě vás bude také zajímat, jak vytvořit DateField
a nastavit mu aktuální čas. Toto provedeme metodou setDate(Date);
:
df = new DateField(„Datum a cas“, DateField.DATE_TIME);
df.setDate(new java.util.Date());
A zde už následuje jednoduchý příklad použití komponenty DateField
:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Abc extends MIDlet implements CommandListener {
Display disp;
Form frm_date;
Command cmd_exit;
DateField df;
public Abc() {
cmd_exit = new Command(„Konec“, Command.SCREEN, 1);
df = new DateField(„Kalendar“, 3);
frm_date = new Form(„Datum a cas“);
frm_date.append(df);
frm_date.addCommand(cmd_exit);
}
public void startApp() {
disp = Display.getDisplay(this);
frm_date.setCommandListener(this);
disp.setCurrent(frm_date);
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) {
notifyDestroyed();
}
public void commandAction(Command c, Displayable d) {
if(c == cmd_exit) {destroyApp(true); }
}
}
Tento příklad vytvoří objekt DateField a umístí ho na formulář. Při otevření pak nabídne editaci jednotlivých položek podle zvoleného typu objektu. Buď datum, čas nebo obojí. Po editaci je možno časový údaj z objektu číst metodou getDate();
, která vrací objekt Date
s časovým údajem odpovídajícím typu vytvořeného objektu DateField
.
Další 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
-
Moderní trendy ve webdesignu: Top trendy pro rok 2024
12. ledna 2024 -
Jak se chránit před podvody na internetu – část 2
14. října 2024
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
Jaroslava Sikonova
Čvn 18, 2010 v 20:27kolikateho je dnes