• Nie Znaleziono Wyników

Aplety

N/A
N/A
Protected

Academic year: 2021

Share "Aplety"

Copied!
10
0
0

Pełen tekst

(1)

Aplety

(2)

Podstawy

2

Wszystkie aplety są podklasami klasy Applet, dlatego muszą importować java.applet. Muszą także importować java.awt

(AWT = Abstract Window Toolkit), ponieważ aplety działają w oknie i potrzebują wsparcia dla okna.

Aplety kompiluje się podobnie jak programy rozpatrywane dotychczas. Natomiast uruchania się je w inny sposób. Aplet nie tylko wykonuje

tradycyjny kod ale także wyświetla informacje w postaci graficznej. Realizować takie zachowania potrafią przeglądarki internetowe oraz specjalne programy przeznaczone do przeglądania apletów, np.

appletwiever.

Wykonanie apletu nie rozpoczyna się od funkcji main(). Mechanizm uruchamiania apletu jest bardziej skomplikowany i opowiemy o nim

wkrótce. Po kompilacji apleta umieszczamy go na stronie HTMLowej w specjalnym znaczniku <APPLET>, np. tak:

<APPLET code=”MyApplet” width=200 height=60 </APPLET>

(3)

3

Aplet

Aplety są programami bazującymi na oknach i jako takie różnią się od programów bazujących na konsoli tekstowej. Podstawowe różnice to:

Aplety obsługują zdarzenia. Aplet potrafi rozpoznać i obsłużyć pewną liczbę sytuacji zachodzących w oknach, np. kliknięcie. Aplet czeka, aż zajdzie rozpoznawalna sytuacja (zdarzenie). AWT, kontrolujące zachowanie okien, informuje aplet o zajściu zdarzenia przez wywołanie tzw. uchwytu zdarzenia, będącego

częścią apleta. Po obsłużeniu zdarzenia aplet oddaje sterowanie do AWT. W sytuacji, gdy aplet musi wykonywać dodatkową, ciągłą

akcję, trzeba utworzyć dodatkowy wątek.

 Użytkownik inicjalizuje interakcję z apletem. Odwrotnie niż w

dotychczasowych programach, które pytały o dane, gdy tylko ich potrzebowały. Interakcje użytkownika z apletem są wysyłane do apleta przez AWT jako zdarzenia.

(4)

4

Aplet

szkielet

Zwykle programy okienkowe korzystają ze skomplikowanego środowiska. AWT Javy stara się je uprościć jak tylko to możliwe. Większość prostych apletów nadpisuje tylko pewne standardowe metody decydujące o zachowaniu apleta. Część z nich jest

zdefiniowana w klasie Applet (init(), start(), stop() i

destroy()) inne np. paint() są zdefiniowane w klasach AWT (tu Component).

Gdy aplet rozpoczyna swoje działanie, AWT wywołuje metody w następującej kolejności: init(), start() i paint().

Natomiast, gdy aplet kończy działanie AWT wywołuje metody następującej kolejności: stop() i destroy().

Opis metod:

init() jest metodą wywoływaną jako pierwsza podczas

uruchamiania apletu. Jest to miejsce, gdzie należy inicjalizować zmienne. Metoda wywoływana tylko raz.

(5)

5

Aplet

szkielet cd

start() jest metodą wywoływaną po init() oraz podczas restartu

apleta. Pierwsze pojawienie się apleta na stronie www wiąże się z wywołaniem init() i start(), powroty do apleta tylko ze

start().

paint() jest metodą wywoływaną zawsze, gdy trzeba odświeżyć

okna apleta. Parametr metody zawiera opis środowiska graficznego, w którym uruchamiamy aplet

stop() jest metodą wywoływaną zawsze, gdy przeglądarka

opuszcza dokument zawierający aplet. Powinna wstrzymywać

wykonanie wszystkich wątków, które nie muszą działać, gdy aplet nie jest widoczny.

destroy() jest metodą wywoływaną, gdy z parametrów środowiska

wynika, że aplet powiniem zostać usunięty z pamięci. Należy

wówczas zwolnić wszystkie zarezerwowane zasoby. Metoda stop() jest zawsze wywoływana przed destroy().

Zobacz: Szkielet.java Szkielet.html

(6)

6

Prosty przykład

Aplet do wydrukowania napisu w oknie używa metody:

void drawString(String msg, int x, int y)

gdzie msg jest drukowanym napisem, x i y początkowymi

współrzędnymi tekstu w oknie (lewy górny róg okna, to (0, 0)). Metoda ta nie rozumie znaków nowej linii. Aby uzyskać taki efekt trzeba użyć odpowiednich współrzędnych x i y.

Aplet może ustawiać kolor tła i kolor pierwszego planu używając metod:

void setBackground(Color c) void setForeground(Color c)

Parametr c specyfikuje kolor. Klasa Color definiuje stałe

specyfikujące dostępne kolory. Aplet może także pobierać ustawione kolory tła i pierwszego planu:

Color getBackground() Color getForeground()

Zobacz: Simple.java Simple.html

(7)

Metoda repaint()

7

Aplet zapisuje coś do okna tylko wtedy, gdy AWT wywołuje metody

update() lub paint() apleta. Jak natomiast aplet może sam

spowodować uaktualnienie zawartości okna, gdy trzeba ją zmienić? Sytuacja taka ma miejsce, gdy w oknie jakiś napis ma się stale

poruszać (banner). Nie możemy stworzyć pętli wewnątrz metody

paint(), ponieważ sterowanie nie powróciło by wówczas do AWT.

Zachowanie, o którym mowa powyżej, można osiągnąć przez

wywołanie metody repaint() zdefiniowanej w AWT. Jej wywołanie powoduje wywołanie przez zarządcę AWT metody update() apleta, której domyślnym zachowaniem jest wywołanie metody paint().

Metoda repaint() posiada klika wersji polimorficznych, wśród nich:

void repaint()

void repaint(int left, int top, int w, int h)

Pierwsza powoduje odświeżenie całego okna, druga tylko podanego fragmentu. Jeżeli to tylko możliwe, należy stosować drugą wersję.

Zobacz: SimpleBanner.java SimpleBanner.html

(8)

8

Znacznik <APPLET>

Składnia:

<APPLET [CODEBASE=url] CODE=applet

ALT=alternateText NAME=appletInstName WIDTH=pixels HEIGHT=pixels

ALIGN=alignment

VSPACE=pixels HSPACE=pixels

> [<PARAM NAME=parName_1 VALUE=parValue_1>] ...

[<PARAM NAME=parName_n VALUE=parValue_n>]

[html code displayed in the absence of Java] </APPLET>

Wyjaśnienia:

CODEBASE adres URL katalogu, w którym będziemy szukać

skompilowanego pliku apletu1

CODE nazwa pliku bez rozszerzenia .class zawierająca kod apleta;

(9)

9

Znacznik <APPLET>

wyjaśnienia

ALT krótki tekst, który pojawi się jeżeli przegladarka rozumie

znacznik <APPLET> ale nie może uruchomić Javy

NAME nazwa instancji apletu służąca innym apletom do nawiązania z

nim komunikacji; aby otrzymać aplet po nazwie można użyć metody

getApplet() zdefiniowanej przez interfejs AppletContext

ALIGN położenie apleta na stronie (jak <IMG> w HTML)

VSPACE i HSPACE puste miejsce nad i pod apletem oraz z lewej i

prawej strony apleta

PARAM NAME i VALUE parametry przekazywane do apleta przez

nazwę; aplet pobiera je metodą getParameter()

 Kod występujący po parametrach jest kodem HTMLowym wyświetlanym przez przeglądarki nie obsługujące znacznika

<APPLET>

Zobacz: ParamDemo.java ParamDemo.html

SimpleBanner2.java

(10)

10

Położenie dokumentów

Często zachodzi potrzeba załadowania przez aplet plików z lokacji, z której pobraliśmy dokument HTML startujący aplet. Istnieją dwie

metody pobierania lokacji:

getDocumentBase() pobiera URL dokumentu HTML stratującego

aplet

getCodeBase() pobiera URL katalogu, z którego załadowano kod

apleta Zobacz: Bases.java

Bases.html

Aplet może być wykorzystany do otworzenia w przeglądarce innego dokumentu HTML. Służy do tego metoda showDocument(URL) interfejsu AppletContext. Interfejs ten jest zaprojektowany do przechowywania informacji o kontekście wykonania apletu.

Kontekst bieżącego apletu możemy uzyskać wywołując jego metodę

getAppletContext(). Zobacz: ACDemo.java ACDemo.html

Cytaty

Powiązane dokumenty

Program typu aplet zawiera między innymi jeden moduł źródłowy, którego klasa publiczna zawiera między innymi.. podstawowe metody: init(), start(), stop(), paint(), destroy()

JeŜeli ustawione jest zewnętrzne źródło zegara dla licznika TC0, licznik będzie mógł być napędzany nawet jeŜeli port ustawiony jest jako wyjście. UmoŜliwia to

Wybrane metody algebraiczne Wykład 2 - działanie grupy na zbiorze. Andrzej

Wiêkszoœæ badanych uwa¿a, ¿e zmiany klimatu spowodowane s¹ równie¿ dzia³alnoœci¹ cz³owieka, a globalne ocieplenie stanowi zagro¿enie dla ¿ycia na Ziemi i powinno siê

Pokazano, ¿e w segmencie zasilania, w ka¿dej z podstawowych grup, to jest w urz¹dzeniach zasilaj¹cych, aparaturze ³¹czeniowej, kablach i przewodach wraz z osprzêtem oraz w

Poszczególne elementy zasadniczej infrastruktury systemowej stanowi¹ sk³adow¹ czêœæ wszystkich procesów produkcji wêgla kamiennego, które realizowana jest w coraz trud-

• Okno tekstowe do wyświetlenia prawidłowo przeliczonej wartości podanej w PLN na walutę obcą (jTextField)... Kiedy już mamy komponenty na formatce ustawiamy ich

Dla wybranego zdarzenia może być wiele event handlers, które mogą wykonać różne zadania.... Mechanizm