Studenkie Kolo Naukowe ISA 2 Warsztaty programistyczne J2ME 12 listopada 2009 Tworzenie GUI wysokiego poziomu Marcin Majak [email protected]Politechnika Wroclawska Wydzial Elektroniki Studenckie Kolo Naukowe Informatyki Systemów Autonomicznych i Adaptacyjnych ISA 2 12 listopada 2009 Marcin Majak Wyskopoziomowe GUI 1/46
Prezentacja wprowadzająca do podstaw programowania urządzeń mobilnych w j2me. Przygotowana i wygłoszona przez Marcina Majaka 12.11.2009.
Prezentacja wygłoszona w ramach Warsztatów programowania telefonów komórkowych w j2me przy Studenckim Kole Naukowym Informatyki Systemów Autonomicznych i Adaptacyjnych ISA^2.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Studenckie Koło Naukowe Informatyki Systemów Autonomicznychi Adaptacyjnych ISA2
12 listopada 2009
Marcin Majak Wyskopoziomowe GUI 1/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Plan prezentacji
1 Wprowadzenie
2 Form
3 Przegląd elementów formularza
4 Wyświetlanie komunikatów
5 Lista
6 Jak zmienić czcionkę?
7 Ticker
8 Dodatkowe
9 Przykłady użycia
Marcin Majak Wyskopoziomowe GUI 2/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Plan prezentacji
1 Wprowadzenie
2 Form
3 Przegląd elementów formularza
4 Wyświetlanie komunikatów
5 Lista
6 Jak zmienić czcionkę?
7 Ticker
8 Dodatkowe
9 Przykłady użycia
Marcin Majak Wyskopoziomowe GUI 3/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Przypomnienie
Przypomnijmy jeszcze raz
Wyświetlić na ekranie możemy tylko obiekty klas wywiedzionych zklasy Displayable, która dostarcza funkcjonalności dostępnejpóźniej we wszystkich jego potomkach.
Display.setCurrent(Displayable nextDisplayable) - ustawienie co mabyc wyswietlane na ekranie
Marcin Majak Wyskopoziomowe GUI 4/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Diagram
Dzisiejszego dnia najważniejsza jest dla nas będzie klasa Screen,która pozwala tworzyć GUI wysokiego poziomu, elementy te swójwygląd przystosowują do urządzenia, na którym aplikacja jesturuchamiana(maszyna Javy konkretnego urządzenia odgrywakluczową rolę).
Marcin Majak Wyskopoziomowe GUI 5/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
W profilu MIDP 2.0, wszystkie metody przeszły z klasy Screen doklasy Displayable, jest to zgodnie z zasadą źgodności wstecz”,aplikacje napisane pod MIDP 1.0 będą działać na urządzeniu oprofilu MIDP 2.0.
Marcin Majak Wyskopoziomowe GUI 6/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Plan prezentacji
1 Wprowadzenie
2 Form
3 Przegląd elementów formularza
4 Wyświetlanie komunikatów
5 Lista
6 Jak zmienić czcionkę?
7 Ticker
8 Dodatkowe
9 Przykłady użycia
Marcin Majak Wyskopoziomowe GUI 7/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Powyższy diagram pokazuje, że wszystkie elementy dziedziczą zklasy abstrakcyjnej Item. Głównym źródłem tworzenia formularzybędzie klasa Form pochodząca z klasy Screen. Poszczególneelementy dokładane do Form wywiedzione są z klasy Item pakietujavax.microedition.lcdui.
Marcin Majak Wyskopoziomowe GUI 8/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Z czego możemy skorzystać I
Możemy tworzyć formularze na dwa sposoby:
Stworzyć pusty formularz z nagłówkiem i sekwencyjniedodawać nowe elementy za pomocą funkcji append()
1 public Form(String nazwaFormularza);2 public void append(Item element);
Przygotować zestaw elementów składających się na naszformularz i użyć konstruktora
1 public Form(String nazwaFormularza, Item[] elementyDoFormularza);
Marcin Majak Wyskopoziomowe GUI 9/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Jeszcze trochę o formularzu I
Inne przydatne metody obsługi formularza:
1 public void delete(int numerElementu);2 public Item get(int numerElementu);3 public void insert(int index, Item rodzajElementu);4 public void set(int index, Item item);5 public int size();
Pamiętaj
W przeciwieństwie do elementów Command elementy Item mogąbyć dodane tylko do jednego Formularza!!!
Marcin Majak Wyskopoziomowe GUI 10/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Obsługa zdarzeń I
Istnieją dwie metody obsługi zdarzeń
Dodanie do formularza obiektu klasy Commad inasłuchiwanie zdarzeń w zarejestrowanym CommandListener
Aby modyfikować formularz w zależności od wprowadzonychdanych należy zarejestrować ItemStateListener
1 public void setItemStateListener(ItemStateListener iListener);2 // rejestracja listenera3 public void ItemStateChanged(Item item);4 // obsluga zdarzen
Marcin Majak Wyskopoziomowe GUI 11/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Plan prezentacji
1 Wprowadzenie
2 Form
3 Przegląd elementów formularza
4 Wyświetlanie komunikatów
5 Lista
6 Jak zmienić czcionkę?
7 Ticker
8 Dodatkowe
9 Przykłady użycia
Marcin Majak Wyskopoziomowe GUI 12/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
StringItem I
StringItem
1 StringItem(String nazwaElementu, String text);2 public String getText(); // pobierz tekst3 public void setText(String text); // ustaw tekst
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
TextField I
TextField- konstruktor i metody
1 public TextField(String nazwaElementu, String tekstPoczatkowy,2 int maxIloscZnakow, int ograniczenia);3 public void setConstraints(int rodzajOgraniczenia);4 public void delete(int poczatekTekstu, int dlugosc);5 public int getChars(char[] tablicaChar);6 public String getString();7 public void insert(char[] data, int poczatekTekstu, int dlugosc,8 int gdzie);9 public void insert(String tekst, int gdzie);
10 public void setChars(char[] data, int poczatekTekstu, int dlugosc);11 public void setString(String text);
Marcin Majak Wyskopoziomowe GUI 14/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
TextField.PHONENUMBER możliwość wprowadzenia numeru
TextField.URL adres internetowy
Marcin Majak Wyskopoziomowe GUI 15/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
ChoiceGroup I
ChoiceGroup umożliwa wybór jednej lub kilki opcji
1 public ChoiceGroup(String nazwaElementu, int rodzaj);2 public ChoiceGroup(String label, int rodzaj,3 String[] nazwyWyborow, Image[] ikony);4 int append(String nazwaWyboru, Image ikona);5 public int size();6 public boolean isSelected(int index);7 public int getSelectedIndex();8 public int getSelectedFlags(boolean[] flags);9 public void insert(int index, String string, Image image);
10 public void set(int index, String string, Image image);11 public void delete(int index);
Marcin Majak Wyskopoziomowe GUI 16/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Rodzaje ChoiceGroup
Choice.EXLUSIVE możliwytylko pojedynczy wybórChoice.MULTIPLE możeszwybrać kilka opcjiChoice.POPUP powciśnięciu rozwija się menu
Marcin Majak Wyskopoziomowe GUI 17/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
DateField I
DateField występuje w 3 rodzajach DateField.DATE,DateField.TIME, DateField.DATE TIME.
1 DateField(String nazwa, int rodzajDzialania,2 TimeZone strefa czasowa);3 DateField(String nazwa, int rodzajDzialania);4 public void setDate(Date data);5 public Date getDate();6 public void setInputMode(int rodzajDzialania);7 public int getInputMode();
Marcin Majak Wyskopoziomowe GUI 18/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Gauge I
Gauge suwak do wybierania wartości liczbowej
1 Gauge(String nazwa, boolean czyMozliwaZmiana,2 int maxWartosc, int poczatkowaWartosc);3 public int getMaxValue();4 public int getValue();5 public void setValue(int wartosc);6 public vois setMaxValue(int wartosc);
Marcin Majak Wyskopoziomowe GUI 19/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Rodzaje odliczania w Gauge I
Dla nieiteraktywnych Gauge rodzaj pola maxWartosc możnaustawić:
10 if (c.getCommandType() == Command.OK)11 GoFurther(m_TextBox.getString());12 }
Marcin Majak Wyskopoziomowe GUI 21/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Plan prezentacji
1 Wprowadzenie
2 Form
3 Przegląd elementów formularza
4 Wyświetlanie komunikatów
5 Lista
6 Jak zmienić czcionkę?
7 Ticker
8 Dodatkowe
9 Przykłady użycia
Marcin Majak Wyskopoziomowe GUI 22/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Alert I
Alert służy do wyświetlania prostych komunikatów na ekranieurządzenia.
1 public void setCurrent(Displayable alertDoWysietlenia);2 public void setCurrent(Alert alert, Displayable nastepnyEkran);3 public Alert(String nazwa);4 public Alert(String nazwa, String alertText,Image alertImage,5 AlertType rodzajAlarmu);6 public int getDefaultTimeout();7 public void setDefaultTimeout(int wartosc);
Marcin Majak Wyskopoziomowe GUI 23/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Rodzaje alertów
Rodzaje alarmów:
AlerType.ALARM
AlerType.CONFIRMATION
AlerType.ERROR
AlerType.INFO
AlerType.WARNING
Marcin Majak Wyskopoziomowe GUI 24/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Plan prezentacji
1 Wprowadzenie
2 Form
3 Przegląd elementów formularza
4 Wyświetlanie komunikatów
5 Lista
6 Jak zmienić czcionkę?
7 Ticker
8 Dodatkowe
9 Przykłady użycia
Marcin Majak Wyskopoziomowe GUI 25/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Przykłady list I
Podobieństwo do ChoiceGroup
Obiekt typu List jest bardzo podobny do omówionego wcześniejChoiceGroup. List wywiedziony jest z klasy Screen, tak więczajmuje cały ekran. Można do niego dołączać własne komendy, aletrzeba pamiętać, że nie można dołączyć do niegoItemStateListener (bo nie wywodzi sie z klasy Item).
1 public List(String nazwa, int rodzajListy);2 public List(String nazwa, int rodzajListy, String[] opcje, Image[] images);
Marcin Majak Wyskopoziomowe GUI 26/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Rodzaje list
Rodzaje list(podobne jak wChoiceGroup):
List.IMPLICIT wybór jednejopcji(zwykła lista)List.EXCLUSIVE wybór jedengoelementu(RadioButtons)List.MULTIPLE wybór kilku opcji
Marcin Majak Wyskopoziomowe GUI 27/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Plan prezentacji
1 Wprowadzenie
2 Form
3 Przegląd elementów formularza
4 Wyświetlanie komunikatów
5 Lista
6 Jak zmienić czcionkę?
7 Ticker
8 Dodatkowe
9 Przykłady użycia
Marcin Majak Wyskopoziomowe GUI 28/46
Studenkie Koło Naukowe ISA2 Warsztaty programistyczne J2ME 12 listopada 2009
Czcionki I
Zmiana czcionki
Aby zmienić czcionkę w naszej aplikacji należy skorzystać z obiektutypu FONT
http://autonom.ict.pwr.wroc.pl/Strona warsztatów:http://autonom.ict.pwr.wroc.pl/∼mstachniukAdres tego dokumentu:http://autonom.ict.pwr.wroc.pl/∼mstachniuk/files/warsztaty2009/04-highlevel-2009.11.12.pdfMID Profile - dokumentacja Javadochttp://java.sun.com/javame/reference/apis/jsr118/Creating 2D Action Games with the Game APIhttp://developers.sun.com/mobility/midp/articles/game/Getting Started With the MIDP 2.0 Game APIhttp://developers.sun.com/mobility/midp/articles/gameapi/GameCanvas - czyli dalej rysujemy po ekraniehttp://4programmers.net/Java/J2ME/GameCanvas - czyli dalej rysujemy po ekranieNetBeanshttp://www.netbeans.org/