w10_java.pdf

(135 KB) Pobierz
w8_java
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 http://java.com
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
27932352.023.png 27932352.024.png 27932352.025.png 27932352.026.png 27932352.001.png 27932352.002.png 27932352.003.png
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
27932352.004.png 27932352.005.png 27932352.006.png 27932352.007.png 27932352.008.png 27932352.009.png
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=
"http://www.serwer/klasyjava">
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
27932352.010.png 27932352.011.png 27932352.012.png 27932352.013.png 27932352.014.png 27932352.015.png 27932352.016.png
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
27932352.017.png 27932352.018.png 27932352.019.png 27932352.020.png 27932352.021.png 27932352.022.png
Zgłoś jeśli naruszono regulamin