w10 java, informatyka, Wykłady Java B.Pańczyk
[ Pobierz całość w formacie PDF ]
Aplet a aplikacja JAVA - Tworzenie apletów • Aplikacje są uruchamiane poprzez interpreter języka Java (poleceniem java z wiersza poleceń – narzędzie SDK) • Aplety są uruchamiane w dowolnej przeglądarce sieciowej obsługującej język Java (jeśli tylko zainstalowane zostały plug-in do przeglądarek – do ściągnięcia ze strony odnośnikiem free download) lub za pomocą polecenia appletviewer (narzędzie z SDK) Beata Pańczyk - Java (Wykład 10) 1 2 Bezpiecze ń stwo apletów Java Tworzenie apletów (1) Aplet nie moŜe: • odczytywać i zapisywać plików na komputerze uŜytkownika • komunikować się z inną witryną WWW niŜ ta, z której został załadowany • ładować i pobierać z komputera uŜytkownika Ŝadnych programów (aplikacji, bibliotek) • aplety nie posiadają metody main(), posiadają natomiast kilka róŜnych metod, które są wywoływane na róŜnych etapach wykonywania apletu • wszystkie aplety są podklasami albo klasy JApplet z pakietu javax.swing albo jej klasy bazowej Applet z pakietu java 3 4 Tworzenie apletów (2) Metody wykorzystywane w apletach Podklasy apletu tworzone przez uŜytkownika przyjmują postać: publicclassmojApletextends javax.swing.JApplet {//kodźródłowyapletu } lub publicclassmojApletextends java.applet.Applet {//kodźródłowyapletu } • init() inicjalizacja • start() uruchamianie • stop() zatrzymywanie • destroy() destrukcja • paint() wyświetlanie Uwaga!!! powyŜsze metody domyślnie nic nie robią; aby cokolwiek zostało wykonane naleŜy przesłonić je nową wersją z odpowiednimi poleceniami 5 6 1 Metoda init() • inicjalizacja apletu następuje w momencie jego załadowania do przeglądarki sieciowej; moŜe obejmować tworzenie obiektów, nadawanie wartości początkowych, ładowanie rysunków lub czcionek, ustawianie parametrów pracy • aby prawidłowo zainicjalizować aplet naleŜy przesłonić metodę init() następująco: publicvoidinit() { //kodmetody } Metoda start() • aplet jest uruchamiany po zakończeniu inicjalizacji; uruchamianie moŜe zachodzić wiele razy, inicjalizacja - tylko raz • zadania do realizacji w momencie uruchamiania mogą obejmować np. wysyłanie komunikatów itp. • aby prawidłowo uruchomić aplet naleŜy przesłonić metodę start() następująco: publicvoidstart() { //kodmetody } 7 8 Metoda stop() • zatrzymywanie i uruchamianie apletu wzajemnie się uzupełniają; zatrzymywanie następuje gdy uŜytkownik opuszcza stronę lub kiedy aplet zatrzymuje sam siebie jawnie wywołując metodę stop() (domyślnie wątek uruchomiony przez aplet kontynuuje pracę nawet, jeŜeli uŜytkownik opuścił juŜ stronę z apletem; poprzez przesłonięcie metody stop() moŜna zawiesić realizację takich wątków i uruchomić je kiedy aplet ponownie staje się widoczny publicvoid stop() { //kodmetody } Metoda destroy() • metoda destroy() pozwala apletowi na usunięcie swoich danych roboczych zanim on sam zostanie usunięty z pamięci lub zanim okno przeglądarki zostanie zamknięte; metody moŜna uŜyć do usunięcia dowolnego aktywnego wątku uruchomionego przez aplet publicvoid destroy() { //kodmetody } • w normalnej sytuacji rzadko stosuje się tę metodę, gdyŜ java posiada automatyczny mechanizm zwalniania zasobów pamięci 9 10 Metoda paint() Przykład 1 - Aplet wy ś wietlaj ą cy godz. i dat ę • metoda pozwala na wyświetlanie w oknie apletu róŜnych elementów (tekst, linie, tło, rysunki) publicvoid paint(Graphics g) { //kodmetody } • metoda pobiera argument - obiekt klasy Graphics; obiekt ten jest tworzony i przekazywany przez samą przeglądarkę; dodatkowo naleŜy do kodu apletu zaimportować klasę: importjava.awt.Graphics; // lub Wykorzystywane klasy i metody: • GregorianCalendar - klasa z pakietu java.util , która reprezentuje wartości daty i czasu zgodnie z układem kalendarza gregoriańskiego • Font - klasa z pakietu java.awt reprezentująca rozmiar, styl i rodzaj wyświetlanej czcionki • Color oraz Graphics2D - klasy z pakietu java.awt • Metoda sleep() klasy Thread (wątek) generuje wyjątek InterruptedException , który musi zostać ujęty w blok poleceń try catch importjava.awt.* 11 12 2 Przykład 1 - kod ź ródłowy Przykład 1 - kod ź ródłowy c.d. Font typ=new Font("Monospaced",Font.BOLD,20); ekran2D.setFont(typ); //ustawienia czcionki: //obiekt przechowujacy biezaca date i czas: GregorianCalendar dzien=new GregorianCalendar(); String czas=dzien.getTime().toString(); ekran2D.setColor(Color.black); //na pozycji o wspolrzednych (5,25) wyswietlany jest ost_czas: ekran2D.drawString(ost_czas,5,25); ekran2D.setColor(kolor); ekran2D.drawString(czas,5,25); try { Thread.sleep(1000); // opoznienie o 1000ms (1s) } catch(InterruptedException e) { /*nic nie rob*/ } ost_czas=czas; //przerysowanie okna apletu - ponowne wywolanie paint() repaint(); }} import java.awt.*; import java.util.*; /* Aplet zegar.class - wyswietla biezacy czas i date, co 1 s */ public class zegar extends javax.swing.JApplet { private Color kolor=new Color(255,204,102);//bursztynowy private String ost_czas=""; public void init() { //ustalamy kolor tla okna apletu: setBackground(Color.black); } public void paint(Graphics ekran) { //obiekt Graphics2D przechowuje dane //o aktualnych ustawieniach czcionek i kolorów Graphics2D ekran2D=(Graphics2D)ekran; 13 14 Przykład 1 - wstawianie apletu na stron ę WWW (plik .htm) Przykład 1 - wynik działania <html><body> <appletcode="zegar.class" height=50width=355> Program wymaga przeglądarki obsługującej aplety Java </applet> </body></html> 15 16 align znacznika <Applet> Wartości parametru: • left align Inne parametry znacznika <Applet> right - ustawia okno apletu po lewej (prawej ) stronie następującego po nim tekstu (np. align="right" ) • texttop right • hspace , vspace - ustawienie odstępu (w pikselach) pomiędzy oknem apletu a otaczającym go tekstem np. hspace=10 • code , codebase texttop - wyrównuje górną krawędź okna apletu z górną krawędzią najwyŜszego znaku w wierszu • top baseline ) - wyrównuje górną (dolną) krawędź okna apletu z górną (dolną) krawędzią najwyŜszego (najniŜszego) elementu w wierszu • absbottom bottom (lub baseline baseline codebase - uŜywane do wskazania miejsca, w którym znajdują się główna i pomocnicze klasy apletu Java np. <appletcode="zegar.class" codebase= absbottom - wyrównuje dół okna apletu z najniŜszym elementem w wierszu • absmiddle absmiddle - wyrównuje środek okna apletu ze środkiem najwyŜszego elementu w wierszu • middle middle - wyrównuje środek okna apletu ze środkiem linii bazowej wiersza tekstu 17 18 3 Parametr align left left , right texttop top top , bottom bottom codebase absbottom absmiddle middle Uniwersalny znacznik <Object> Pliki archiwum JAR • archiwum Java - zbiór klas Java oraz innych plików spakowanych do jednego pliku; ogranicza ilość niezbędnych do załadowania i uruchomienia apletu połączeń przeglądarki z serwerem WWW do jednego; tworzone za pomocą narzędzia jar z SDK (bez kompresji lub kompresja .zip ) • Parametry jar (samo jar podaje listę parametrów): c - utworzenie archiwum java f - kolejny parametr to nazwa tworzonego archiwum, np. jarcfanimacje.jar*.class*.gif jarcf arch.jarj1.class j1.auj2.au • Wywołanie apletu z archiwum: <appletcode="j1.class"archives="arch.jar" width=45height=45> • <object classid="java:zegar.class" codebase="klasyjava" height=40width=400></object> • Parametry znacznika <object>: codebase , height , width , align jak w znaczniku <Applet> 19 20 Przekazywanie parametrów do apletu Przykład 2 - modyfikacja apletu zegar, przekazanie koloru tła jako parametru • Parametry apletów przekazywane są w pliku HTML za pomocą znacznika w bloku <applet>…</applet> : <paramname="nazwa"value="wartość> Np.: <appletcode=zegar.class"width=100 height=50> <paramname=fontvalue="TimesRoman"> <paramname=wysvalue="24"> Javaaplet</applet> • Aplet moŜe odczytać parametry za pomocą metody getParameter() zwracającej łańcuch tekstu lub null (w przypadku braku parametrów) import java.awt.*; import java.util.*; /* Aplet zegar1.class - modyfikacja zegar.class s */ public class zegar1 extends javax.swing.JApplet { private Color kolor=new Color(255,204,102);//bursztynowy private String ost_czas=""; Color kolor1; //wprowadzono nowy obiekt klasy Color public void init() { String we=getParameter("tlo"); kolor1=Color.black; if (we!=null) { try {kolor1=Color.decode(we);} catch (NumberFormatException e) {showStatus("Zly parametr:"+we);}} setBackground(kolor1); 21 } 22 Przykład 2 - c.d. Przykład 2 - plik HTML public void paint(Graphics ekran) { Graphics2D ekran2D=(Graphics2D)ekran; Font typ=new Font("Monospaced",Font.BOLD,20); ekran2D.setFont(typ); GregorianCalendar dzien=new GregorianCalendar(); String czas=dzien.getTime().toString(); ekran2D.setColor(kolor1); ekran2D.drawString(ost_czas,5,25); ekran2D.setColor(kolor); ekran2D.drawString(czas,5,25); try{ Thread.sleep(1000); } catch(InterruptedException e) { } ost_czas=czas; //przerysowanie okna apletu (ponowne wywolanie paint() repaint(); }} <html> <body bgcolor="# 996633 "> <p> BieŜący czas: <applet code="zegar1.class" height=50 width=355> <param name="tlo" value="#996633"> Aplet Java </applet> </body></html> 23 24 4 [ Pobierz całość w formacie PDF ] |