Proz S4 id 402994 Nieznany

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 1

4. Pakiet

java.applet

4.1 Pakiet

java.applet

4.2 Apletowe API

4.1 Pakiet

java.applet

Aplet jest

niesamodzielnym programem

, doł

ą

czanym do innej (ale

specjalizowanej) aplikacji, w rodzaju przegl

ą

darka internetowa (stanowi

ona kontekst dla apletu).
Ka

ż

dy aplet tworzony jest jako

klasa pochodna

od klasy

Applet

.

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 2

1) Klasa

java.applet.Applet

Deklaracja

public class Applet extends java.awt.Panel


Implementowane interfejsy:



javax.accessibility.Accessible

(przez

Panel

),



java.awt.image.ImageObserver,

java.awt.MenuContainer i
java.io.Serializable

(przez

Component

).

public interface Accessible

– interfejs wyznacza jedn

ą

metod

ę

:

AccessibleContext

getAccessibleContext()

zwraca

obiekt

typu

AccessibleContext

, zwi

ą

zany z zadanym obiektem i zawieraj

ą

cy

informacje o obiekcie i jego mo

ż

liwo

ś

ciach – np. o wykonywanych

akcjach, jego graficznej reprezentacji, selekcji komponentów potomnych,
prezentacji edytowalnego tekstu.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 3

Klasa zagnie

ż

d

ż

ona w klasie

Applet

:

protected class Applet.AccessibleApplet extends Panel.AccessibleAWTPanel

Ta klasa implementuje mechanizm informowania o obiekcie apletu (np.
jego stanie i roli) oraz jego mo

ż

liwo

ś

ciach.

public interface ImageObserver

– interfejs wyznacza jedn

ą

metod

ę

:

boolean

imageUpdate(Image img, int infoflags, int x, int y, int width, int he);

Ta

metoda

wywoływana

jest

w

celu

obserwacji

post

ę

pu

asynchronicznego ładowania obrazu.

public interface MenuContainer

bazowy interfejs dla wszystkich

kontenerów zawieraj

ą

cych menu.

public interface Serializable

– pusty interfejs, który wskazuje na

mo

ż

liwo

ść

serializacji obiektu. Klasa mo

ż

e (ale nie musi)

implementowa

ć

metody:

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 4

private void writeObject(java.io.ObjectOutputStream out) throws IOException
private void readObject(java.io.ObjectInputStream in) throws IOException,
ClassNotFoundException;

Konstruktor klasy

Applet

:

public Applet() throws HeadlessException ;

Wyj

ą

tek zgłaszany jest w sytuacji, gdy aplet wołany jest w

ś

rodowisku

nie

dysponuj

ą

cym

urz

ą

dzeniami

wprowadzania

danych

przez

u

ż

ytkownika.


Obok klasy

Applet

pakiet

java.applet

zawiera te

ż

3 interfejsy

:



public interface AppletContext

– wyznacza metody dla pobrania

informacji o

ś

rodowisku wykonania apletu, czyli o dokumencie HTML,

zawieraj

ą

cym dany aplet, i informacje o innych apletach tego

dokumentu. Wyznacza nast

ę

puj

ą

ce metody:

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 5

Applet getApplet(String name)

– pobiera aplet o podanej nazwie znajdujący

się w kontekście danego apletu;

Enumeration getApplets()

– znajduje wszystkie aplety znajdujące się w

kontekście danego apletu;

AudioClip

getAudioClip(URL url)

– tworzy klip dźwiękowy;

Image getImage(URL url)

– tworzy obiekt dla pliku graficznego;

InputStream getStream(String key)

– pobiera strumień wejściowy związany z

zadanym kluczem i występujący w kontekście apletu;

Iterator getStreamKeys()

– pobera klucze dla wszystkich strumieni w

kontekście apletu;

void

setStream(String key, InputStream stream)

– związuje zadany strumień

z zadanym kluczem;

void

showDocument(URL url)

– powoduje zmianę wyświetlanej strony na

stronę o zadanym URL;

void

showDocument(URL url, String target)

– żądanie wyświetlenia zadanej

strony;

void

showStatus(String status)

– wyświetla zadany napis w oknie stanu.

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 6



public interface AppletStub

- podczas pierwszego utworzenia apletu

doł

ą

czana jest namiastka ("stub") apletu metod

ą

setStub

– namiastka

po

ś

redniczy pomi

ę

dzy apletem a procesem przegl

ą

darki. Wyznacza

takie metody, jak:

void

appletResize(int width, int height)

– do zmiany rozmiaru okna apletu;

AppletContext

getAppletContext()

– do uzyskania obiektu kontekstu apletu.

URL

getCodeBase()

– do pobrania bazowego adresu URL apletu;

URL

getDocumentBase()

– do pobrania globalnej kartoteki dokumentu;

String getParameter(String name)

– do pobrania wartości nazwanego

parametru.

boolean isActive()

– podaje to, czy aplet jest w stanie aktywnym.



public interface AudioClip

– wyznacza metody dla odtwarzania klipów

d

ź

wi

ę

kowych.

void

loop()

- uruchamia odtwarzanie klipu dźwiękowego w pętli;

void

play()

– uruchamia odtwarzanie klipu dźwiękowego;

void

stop()

– zatrzymuje odtwarzanie klipu dźwiękowego.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 7

2) Charakterystyka



Klasa

Applet

posiada metody wywoływane przez przegl

ą

dark

ę

wtedy,

gdy zachodz

ą

zmiany w stanie apletu

– inicjalizuje si

ę

, rozpoczyna

wykonanie, zatrzymuje, jest usuwany.

Nadpisanie

tych metod pozwala

na odpowiedni

ą

reakcj

ę

apletu na zmian

ę

jego stanu.



Applet

dziedziczy metody do

malowania grafiki i obrazów

oraz

obsługi

zdarze

ń

po klasie

Container

w pakiecie

AWT

(„Abstract Windowing

Toolkit”) – przeznaczonym do tworzenia graficznego interfejsu
u

ż

ytkownika (GUI).



Apletów dotycz

ą

ograniczenia zabezpieczaj

ą

ce

: zwykle nie mog

ą

odczytywa

ć

i zapisywa

ć

plików na komputerze na którym si

ę

wykonuj

ą

, nie mog

ą

ł

ą

czy

ć

si

ę

z innym komputerem za wyj

ą

tkiem

swojego „domowego”.



Znacznik

<APPLET>

j

ę

zyka HTML umo

ż

liwia doł

ą

czenie apletu do

strony html.

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 8

3) Bezpo

ś

rednia klasa pochodna

Klasa

JApplet

(w pakiecie

javax.swing

)

public class JApplet extends Applet implements Accessible,

RootPaneContainer

JApplet

umo

ż

liwia u

ż

ycie klas

JFC/Swing

dla apletu.

Obiekt klasy

JApplet

zawiera jeden jedyny komponent klasy

JRootPane

(który posiada

contentPane, glassPane, layeredPane

) a dalsze komponenty

nale

ż

y doł

ą

cza

ć

nie bezpo

ś

rednio do apletu a do jego

contentPane

.

Np. dla obiektu klasy

Applet

piszemy:

applet.add( komponent );

ale dla klasy

JApplet

nale

ż

y doda

ć

komponent w nast

ę

puj

ą

cy sposób:

applet.getContentPane().add( komponent );

Podobne ró

ż

nice wyst

ą

pi

ą

dla innych operacji, jak np. ustawianie

menad

ż

era

układu

("

LayoutManager

")

,

usuwanie

komponentów,

porz

ą

dkowanie - wszystkie te operacje wykonuje si

ę

na obiekcie

składowym

contentPane

a nie na samym obiekcie klasy

JApplet

.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 9

4) Metody klasy

Applet

informuj

ą

ce o stanie apletu

public boolean isActive()

Informuje o tym, czy aplet jest aktywny. Aplet staje si

ę

aktywny tu

ż

przed

wywołaniem jego metody

start

, a przestaje by

ć

aktywny tu

ż

przed

wywołaniem jego metody

stop

.

public String getAppletInfo()

Podaje informacj

ę

o danym aplecie - autora, wersj

ę

, prawa autorskie, itp.

public Locale getLocale()

Podaje obiekt klasy

Locale

dla apletu - reprezentuje on region kulturowy.

Je

ś

li nie ustawiono obiektu

Locale

to zwracany jest domy

ś

lny obiekt.

public final class Locale extends Object implements Cloneable, Serializable

(w pakiecie

java.util

)

Konstruktory klasy:

Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 10

Argumenty konstruktorów

Locale

:

language

- to kod j

ę

zyka (kod dwu-literowy według normy ISO-639 -

"małe litery");

country

- to kod kraju (kod 2-literwoy kraju według normy ISO-3166 -

"du

ż

e litery");

variant

- to kod charakteryzuj

ą

cy producenta lub przegl

ą

dark

ę

- np.

"es", "ES", "Traditional_WIN".

public AccessibleContext getAccessibleContext() ;

Metoda

zwraca

obiekt

typu

AccessibleApplet

pełni

ą

cy

rol

ę

AccessibleContext

dla danego apletu.

Szereg metod

Applet

jest dziedziczonych z klas:

java.awt.Panel,
java.awt.Container,
java.awt.Component,
java.lang.Object.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 11

5) Czas

ż

ycia apletu - główne metody

Ładowanie apletu



tworzony jest obiekt klasy apletu (klasa pochodna od

Applet);



aplet sam si

ę

inicjalizuje -

init

;



aplet jest uruchamiany

- start .

Opuszczenie i powrót do strony z apletem

Podczas opuszczania strony przez u

ż

ytkownika jej aplet mo

ż

e si

ę

zatrzyma

ć

stop

. Podczas powrotu do strony jej aplet mo

ż

e si

ę

wznowi

ć

start

. Podobna sytuacja zachodzi gdy okno strony jest

miniaturyzowane i ponownie przywracane.

Od

ś

wie

ż

anie apletu

Niekiedy przegl

ą

darka umo

ż

liwia od

ś

wie

ż

anie apletu, tzn. jego

zwolnienie (

stop

,

destroy

) i ponowne załadowanie.

Usuwanie apletu

Aplet ma szans

ę

wykonania ko

ń

cowych operacji czyszcz

ą

cych

(

destroy

).

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 12

public void init()

Metoda wywoływana przez przegl

ą

dark

ę

w celu poinformowania apletu

o tym,

ż

e został załadowany do pami

ę

ci. Nast

ę

puje to zawsze przed

pierwszym wywołaniem metody

start

. Umo

ż

liwia to własn

ą

inicjalizacj

ę

apletu, np. uruchomienie w

ą

tków.

public void start()

Metoda wywoływana przez przegl

ą

dark

ę

w celu poinformowania apletu

o tym,

ż

e powinien rozpocz

ąć

lub wznowi

ć

swoje wykonywanie, np.

wykonywa

ć

animacj

ę

.

public void stop()

Metoda wywoływana przez przegl

ą

dark

ę

w celu poinformowania apletu

o tym,

ż

e powinien zawiesi

ć

swoje wykonywanie, np. zatrzyma

ć

animacj

ę

.

public void destroy()

Metoda wywoływana przez przegl

ą

dark

ę

w celu poinformowania apletu

o tym,

ż

e b

ę

dzie usuni

ę

ty z pami

ę

ci i powinien usun

ąć

wszelkie zasoby,

z których korzysta, np. usun

ąć

w

ą

tki. Przed t

ą

metod

ą

zawsze b

ę

dzie

wołana metoda

stop

.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 13

Przykład.

Aplet

Simple

wy

ś

wietla napis odpowiedni do swojego stanu.

import java.applet.Applet;
import java.awt.Graphics;
public class Simple extends Applet {
StringBuffer buffer;

// Przechowuje prezentowany tekst

public void init() {
buffer = new StringBuffer();
addItem("initializing... ");
}
public void start() {
addItem("starting... ");
}
public void stop() {
addItem("stopping... ");
}
public void destroy() {
addItem("preparing for unloading...");
}

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 14

void addItem(String newWord) {
System.out.println(newWord);
buffer.append(newWord);
repaint();
}
public void paint(Graphics g) {

// Wykreśla prostokąt wokół obszaru ekranu apletu

g.drawRect(0, 0, size().width - 1, size().height - 1);

// Wypisz aktualny napis w obszarze ekranu apletu.

g.drawString(buffer.toString(), 5, 15);
}
}

Aplet wywoływany jest ze strony html, np.:

<applet code="Simple.class" codebase=example-1dot1/ width=500 height=20>
</applet>

Ten aplet pojawia si

ę

z tekstem oddaj

ą

cym stan obiektu klasy

Simple

.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 15

Główne metody apletu

-

init(), start(), stop(), destroy()

Np. Nasza klasa

Simple

:

public class Simple extends Applet {
. . .
public void init() { . . . }

// Inicjalizacja podczas ładowania apletu

public void start() { . . . }

// Uruchamianie wykonania apletu

public void stop() { . . . }

// Zatrzymanie wykonywania apletu

public void destroy() { . . . }

// Czyszczenie podczas usuwanie apletu

. . .
}



Metoda

init

zawiera zwykle to co powinien zawiera

ć

konstruktor.



W aplecie, który wykonuje co

ś

wi

ę

cej ni

ż

tylko reakcje na akcje

u

ż

ytkownika, powinno si

ę

nadpisa

ć

metod

ę

start.

Ta metoda

wykonuje zadanie apletu lub uruchamia jego w

ą

tki. Wtedy tak

ż

e

nale

ż

y nadpisa

ć

metod

ę

stop.



Metoda

destroy

umo

ż

liwia zwolnienie zasobów, których nie

decydujemy si

ę

zwalnia

ć

w metodzie

stop

.

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 16

6) Metody dla wykre

ś

lania grafiki i dla obsługi zdarze

ń

Dost

ę

pne s

ą

dwie metody (dziedziczone z klasy

Container

) dla

realizacji wy

ś

wietlania apletu:

public void paint(Graphics g)
public void update(Graphics g)



paint()

– metoda przeznaczona dla definicji sposobu wy

ś

wietlenia

apletu;



update()

– ta metoda wywoływana jest przez

repaint()

(dla cało

ś

ci

lub cz

ęś

ci komponentu) i powoduje wy

ś

wietlenie apletu metod

ą

paint()

; umo

ż

liwia zdefiniowanie w klasie apletu dodatkowych

czynno

ś

ci, które nale

ż

y wykona

ć

podczas od

ś

wie

ż

ania wygl

ą

du

apletu.

Graphics

reprezentuje obszar graficzny danego komponentu.


Np. w klasie

Simple

nadpisano metod

ę

paint

:

class Simple extends Applet {
. . .

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 17

public void paint(Graphics g) { . . . }
. . .
}


Klasa

Component

posiada szereg metod obsługi zdarze

ń

, np.

action

,

mouseDown

; a tak

ż

e jedn

ą

metod

ę

dla wszystkich zdarze

ń

handleEvent

.


Np. Uzupełnimy klas

ę

Simple

o obsług

ę

zdarzenia klikni

ę

cia mysz

ą

.

import java.awt.Event;
. . .
public boolean mouseDown(Event event, int x, int y) {
addItem("click!... ");
return true;
}

Teraz gdy klikniemy w polu apletu wy

ś

wietli si

ę

napis "click!...".

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 18

Inne metody obsługi zdarze

ń

dziedziczone przez

Applet

po

Component

:

keyDown, keyUp,
mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp,
processComponentEvent, processFocusEvent, processHierarchyBoundsEvent,
processHierarchyEvent,
processInputMethodEvent,
processKeyEvent,
processMouseEvent, processMouseMotionEvent, processMouseWheelEvent.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 19

7) Metody słu

żą

ce doł

ą

czaniu komponentów GUI (w AWT)

Prosty kod metody

paint

w klasie

Simple

nie obsługuje przepełnienia

ekranu, tzn. nie zapewnia przesuwu wy

ś

wietlania ("scrolling").

Np. po przepełnieniu dalszy tekst nie jest widoczny:


Mo

ż

na zastosowa

ć

klasy komponentów interfejsu u

ż

ytkownika -

przeznaczone dla projektowania interfejsu u

ż

ytkownika programu (UI),

np. z pakietów

AWT

lub

Swing

.


Klasa

Applet

dziedziczy z klasy

Container

, czyli mo

ż

na dodawa

ć

komponenty i korzysta

ć

z menad

ż

era układu dla operowania

pozycjami komponentów na ekranie.

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 20

Pakiet AWT

zawiera nast

ę

puj

ą

ce komponenty dla GUI:

kontenery (klasy

java.awt.

Panel

, java.awt.

Window

i ich pochodne).

przycisk (klasa

java.awt.Button

)

okienko wyboru (klasa

java.awt.Checkbox

) i grupa wykluczaj

ą

cych si

ę

okien wyboru (

java.awt.CheckboxGroup

)

pole tekstowe 1-wierszowe (klasa

java.awt.TextField

)

obszar edycyjny (klasa

java.awt.TextArea

)

etykieta (klasa

java.awt.Label

)

lista wyborów (klasa

java.awt.List

)

rozwijana lista wyborów (klasa

java.awt.Choice

)

pasek przewijania (klasa

java.awt.Scrollbar)

obszar wykre

ś

lania (klasa

java.awt.Canvas)

menu (klasy

java.awt.Menu, java.awt.MenuBar, java.awt.MenuItem,

java.awt.CheckboxMenuItem)

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 21

Niektóre metody klasy

Container

,

z których mo

ż

e korzysta

ć

aplet:



add

- dodaj podany komponent,



remove

- usu

ń

podany komponent,



setLayout

- ustaw menad

ż

era układu

.



public void resize(int width, int height)

Powoduje zmian

ę

rozmiaru ekranu dla apletu na nowy (szeroko

ść

i

wysoko

ść

podane jako argumenty wywołania).



public void resize(Dimension d)

Powoduje zmian

ę

rozmiaru ekranu dla apletu na nowy (szeroko

ść

i

wysoko

ść

podane s

ą

w obiekcie-argumencie d).

Przykład.

W klasie

Simple

zastosujemy przesuwne, nie edytowalne

pole tekstowe - obiekt klasy

TextField

:

// Importowanie java.awt.Graphics nie jest już potrzebne, gdyż teraz
// aplet nie implementuje metody paint().

import java.awt.TextField;
public class ScrollingSimple extends Applet {
TextField field;

// Zamiast ze StringBuffer korzystamy z TextField

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 22

public void init() {
field = new TextField();

// Utwórz obiekt klasy "pole tekstowe"

field.setEditable(false);

// Ustaw pole jako nie-edytowalne

setLayout(new java.awt.GridLayout(1,0));

// Ustaw układ tak, że

// pole jest najszersze z możliwych.

add(field);

// Dodaj pole tekstowe do apletu

validate();

// Opracuje kontener i wyświetli go na ekranie

addItem("initializing... ");
}

// . . .

void addItem(String newWord) {

// Teraz ta metoda dołącza tekst do naszego TextField.

String t = field.getText();
System.out.println(newWord);
field.setText(t + newWord);
repaint();

//Widok pola tekstowego na ekranie zostanie odświeżony.

}

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 23

8) Co aplety mog

ą

a czego nie mog

ą

Przegl

ą

darki "z rezerw

ą

" traktuj

ą

aplety ładowane przez sie

ć

.

Aplet nie mo

ż

e doł

ą

cza

ć

bibliotek ani definiowa

ć

metod

"rodzimych".

Nie mo

ż

e odczytywa

ć

lub zapisywa

ć

plików na maszynie na której

si

ę

wykonuje.

Nie mo

ż

e ł

ą

czy

ć

si

ę

z si

ę

z innymi maszynami za wyj

ą

tkiem

własnej, z której pochodzi.

Nie mo

ż

e uruchomi

ć

ż

adnego programu na aktualnej maszynie.

Nie mo

ż

e odczytywa

ć

pewnych własno

ś

ci systemu.

Okna aktywowane przez aplet ró

ż

ni

ą

si

ę

od okien przegl

ą

darki.


Ka

ż

da przegl

ą

darka dysponuje obiektem klasy

SecurityManager

, który

implementuje polityk

ę

zabezpiecze

ń

. Aplet mo

ż

e przechwyci

ć

wyj

ą

tek

SecurityException

zgłaszany przez

SecurityManager

i odpowiednio

zareagowa

ć

.

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 24


Jednak aplety posiadaj

ą

te

ż

wbudowane mo

ż

liwo

ś

ci, których nie

maj

ą

aplikacje.

Aplet mo

ż

e ł

ą

czy

ć

si

ę

poprzez sie

ć

ze "swoim komputerem".

Pracuj

ą

c w ramach przegl

ą

darki aplet mo

ż

e wy

ś

wietla

ć

strony HTML.

Aplet mo

ż

e wywoła

ć

publiczne metody innego apletu z tej samej

strony.

Aplety ładowane z lokalnego systemu plików (z kartoteki w

CLASSPATH u

ż

ytkownika) nie posiadaj

ą

ogranicze

ń

dotykaj

ą

cych

apletów ładowanych poprzez sie

ć

.

Aplet nie musi ko

ń

czy

ć

pracy wraz z opuszczeniem jego strony przez

u

ż

ytkownika.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 25

9) Uruchamianie apletu

Nale

ż

y doł

ą

czy

ć

aplet do dokumentu HTML znacznikiem

<APPLET>

.

Nale

ż

y poda

ć

URL strony HTML przegl

ą

darce Javy lub AppletViewer.

Np.

<APPLET CODE=AppletSubclass.class WIDTH=anInt HEIGHT=anInt>

</APPLET>

Wykonanie instrukcji znacznika przez przegl

ą

dark

ę

:

- rezerwuje dla apletu obszar ekranu o podanym rozmiarze,
- ładuje bajt-kod podanego apletu,
- tworzy obiekt podanej klasy apletu,
- wywołuje metody

init

i

start

dla obiektu apletu.

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 26

4.2 Apletowe API

1) Odszukanie i załadowanie plików z danymi



public URL getCodeBase()

Zwraca adres URL apletu - URL kartoteki z której ładuje si

ę

aplet.



public URL getDocumentBase()

Zwraca adres URL z nazw

ą

kartoteki w której znajduje si

ę

dokument

HTML zawieraj

ą

cy dany aplet.Np. je

ś

li aplet zawarty jest w dokumencie:

http://java.sun.com/products/jdk/1.2/index.html

to jego "

document base

" wynosi:

http://java.sun.com/products/jdk/1.2/



Je

ś

li znacznik

<APPLET>

nie zawiera "

code base

" to zarówno

code

base

jak i

document base

odnosz

ą

si

ę

do tej samej kartoteki.



Dane apletu s

ą

zwykle adresowane wzgl

ę

dem jego

code base

.



Dane specyfikowane przez u

ż

ytkownika apletu s

ą

adresowane

relatywnie do

document base

.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 27

Przykład

. Obrazy i d

ź

wi

ę

ki b

ę

d

ą

adresowane relatywnie do bazowego

URL. Nast

ę

puj

ą

ca instrukcja utworzy obiekt klasy

Image

zwi

ą

zany z

plikiem

a.gif

w kartotece

imgDir

:

Image image = getImage(

getCodeBase(), "imgDir/a.gif"

);



public Image getImage(URL url)

Zwraca obiekt klasy

Image

, który mo

ż

e by

ć

wizualizowany na ekranie.

Argument typu URL podaje absolutny adres obrazu. Obraz ładowany
jest dopiero w momencie, gdy ma on by

ć

umieszczony na ekranie.



public Image getImage(URL url, String name)

Zwraca obiekt klasy

Image

, który mo

ż

e by

ć

wizualizowany na ekranie.

Argument typu URL podaje absolutny adres, a drugi argument podaje
dokładne poło

ż

enie obrazu wzgl

ę

dem pierwszego adresu. Obraz

ładowany jest dopiero wtedy, gdy ma on by

ć

umieszczony na ekranie.

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 28

2) Wy

ś

wietlanie krótkich napisów o statusie

W przegl

ą

darce istnieje

wiersz statusu

, do którego dost

ę

p ma

przegl

ą

darka i jej aplety. Aplet mo

ż

e wysyła

ć

tam krótkie napisy

informuj

ą

ce o aktualnym stanie przetwarzania.



public void showStatus(String msg)

- wy

ś

wietlenie napisu - argumentu w "oknie statusu" przegl

ą

darki.

Np.

showStatus("MyApplet: Loading image file " + file);

3) Wy

ś

wietlanie dokumentów

Aplet mo

ż

e przekaza

ć

do przegl

ą

darki wezwanie, aby ta wy

ś

wietliła

sformatowany tekst w HTML. Słu

ż

y do tego metoda

showDocument

w

klasie

AppletContext

, wyst

ę

puj

ą

ca w 2 postaciach:

public void showDocument(java.net.URL url)
public void showDocument(java.net.URL url, String targetWindow)

Pierwsza wersja podaje jedynie adres dokumentu przewidzianego do
wy

ś

wietlenia.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 29

Druga wersja podaje tak

ż

e w którym oknie nale

ż

y wy

ś

wietli

ć

dokument.

Drugim argumentem mo

ż

e by

ć

:



"_blank

"

- w nowym, nienazwanym oknie;



"

windowName

"

- w oknie o podanej nazwie, w razie potrzeby utworzy

to okno;



"_self

"

- w oknie i ramce tej samej co aplet;



"_parent

"

- w oknie apletu ale w ramce przodka dla ramki apletu; je

ś

li

ramka apletu nie posiada przodka to efekt jest ten sam co dla

"_self"

.



"_top

"

- w oknie apletu ale w ramce najwy

ż

szego poziomu; je

ś

li jest

nim ramka apletu to efekt jest ten samo co dla

"_self"

.

Przykład.

Pewien aplet

ShowDocument

ilustruje u

ż

ycie metody

showDocument

- w obu wersjach i dla wszystkich opcji. Aplet wy

ś

wietla

okno, w którym podajemy 1 lub 2 argumenty wywołania metody

showDocument

. Aplet wywołuje t

ę

metod

ę

po klikni

ę

ciu przycisku "

Show

document"

lub przyci

ś

ni

ę

ciu "

return

".

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 30

...// W naszej klasie pochodnej od Applet utworzymy główne okno
// zwi
ązane z kontekstem apletu:

urlWindow = new URLWindow(getAppletContext());
. . .
class URLWindow extends Frame {

// Nasza klasa głównego okna

. . .
public URLWindow(AppletContext appletContext) {

// Okno uzyska

// kontekst naszego apletu.

. . .
this.appletContext = appletContext;
. . .
}

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 31

. . .
public boolean action(Event event, Object o) {

// Obsługa zdarzenia

. . .
String urlString =

/*napis wprowadzany przez użytkownika */;

URL url = null;
try { url = new URL(urlString);
} catch (MalformedURLException e) {

...// Poinformuj użytkownika i powróć ...

}
if (url != null) {
if (

/* użytkownik nie określa okna */

) {

appletContext.showDocument( url );
} else {
appletContext.showDocument( url,

/* podane okno */

);

}
}
. . .

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 32

4) Przesyłanie komunikatów do innych apletów

Aplet mo

ż

e odnale

źć

inne aplety i przesła

ć

do nich komunikat.

Przegl

ą

darki nakładaj

ą

zwykle ograniczenia:



aplety powinny pochodzi

ć

z tego samego serwera,



czasami powinny by

ć

w tej samej kartotece (ten sam "

code base

"),



Java API wymaga, aby aplety wykonywały si

ę

na tej samej stronie -

w tym samym oknie.

Pobranie kontekstu dla apletu

public AppletContext getAppletContext()

Okre

ś

la kontekst dla apletu (m.in. dokument w którym jest zawarty), co

pozwoli apletowi na zapytania do

ś

rodowiska i jego modyfikacj

ę

.

Znalezienie apletu poprzez jego nazw

ę

– metoda

getApplet()

w klasie

AppletContext

. Metoda

getApplet()

przeszukuje wszystkie aplety

znajduj

ą

ce si

ę

na bie

żą

cej stronie i zwraca obiekt klasy

Applet

, je

ś

li

znajdzie aplet o podanej nazwie.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 33

Domy

ś

lnie

aplety

nie posiadaj

ą

nazw. Nazw

ę

nadaje si

ę

apletowi na 2

sposoby:
(1) podajemy atrybut

NAME

na stronie ze znacznikiem apletu

<APPLET>

; np.:

<APPLET CODEBASE=example/ CODE=Sender.class
WIDTH=450
HEIGHT=200
NAME="Nadawca">
. . .
</applet>

(2) Podaj

ą

c parametr

NAME

w znaczniku

<PARAM>

; np.:

<APPLET CODEBASE=example/ CODE=Receiver.class
WIDTH=450
HEIGHT=35>
<PARAM NAME="name" value="Odbiorca">
. . .
</applet>

Uwaga: du

ż

e i małe litery w nazwie apletu zwykle nie s

ą

rozró

ż

niane.

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 34

Przykład.

Aplet

Sender

poszukuje apletu

Receiver

. Je

ś

li go znajdzie

przesyła do niego komunikat.

Receiver

reaguje zmieniaj

ą

c swój napis po

prawej stronie na: "

Otrzymano wiadomo

ść

od

sender-name

!".

Poniewa

ż

"

Nadawca

" jest nazw

ą

samego

S

ender

-a

, aplet o tej nazwie

zostanie znaleziony, ale nie otrzyma on komunikatu, gdy

ż

nie jest

obiektem klasy

Receiver

.

Oto fragment apletu

Sender

słu

żą

cy do komunikacji z

Receiver

:

Applet receiver = null;
String receiverName = nameField.getText();

// Podaj nazwę apletu

.

receiver = getAppletContext().getApplet(receiverName);

...

if (receiver != null) {

// Operatorem instanceof sprawdzimy, czy znaleziony obiekt jest
// klasy Receiver.

if (!(receiver instanceof Receiver)) {
status.appendText("Znaleziono aplet o nazwie "
+ receiverName + ", "
+ "ale nie jest on typu Receiver.\n");

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 35

} else {
status.appendText("Znaleziono aplet o nazwie "
+ receiverName + ".\n"
+ " Przesyłam mu komunikat. \n");

// Konwersja do obiektu klasy Receiver aby móc wywołać metodę
// tej klasy a nie klasy Applet

((Receiver)receiver).processRequestFrom(myName);
}
} . . .

Uwagi

Aplet mo

ż

e pobra

ć

swoj

ą

własn

ą

nazw

ę

wołaj

ą

c metod

ę

klasy

Aplet

-

getParameter

:

myName = getParameter("NAME");

Je

ś

li obiekt

Receiver

miałby równie

ż

przesyła

ć

zwrotnie komunikaty do

obiektu

Sender

, to

Sender

powinien mu przekaza

ć

referencj

ę

na siebie.

Np.:

((Receiver)receiver).startCommunicating(this);

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 36

Znalezienie wszystkich apletów na danej stronie

- metoda

getApplets()

.

Metoda

getApplets

zwraca obiekt klasy

Enumeration

b

ę

d

ą

cy list

ą

wszystkich apletów danej strony.

Przykład.

Aplet

getApplets

listuje wszystkie aplety danej strony. Oto

fragmenty metody wywołuj

ą

cej

getApplets

.

public void printApplets() {
Enumeration e = getAppletContext().getApplets();
. . .

// Obiekt typu Enumeration zawiera wszystkie aplety danej strony

while (e.hasMoreElements()) {
Applet applet = (Applet)e.nextElement();
String info = ((Applet)applet).getAppletInfo();
if (info != null) {
textArea.appendText("- " + info + "\n");
} else {
textArea.appendText("- " + applet.getClass().getName() + "\n");
}
} . . .
}

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 37

5) Odtwarzanie d

ź

wi

ę

ków

Klasa

Applet

i interfejs

AudioClip

realizuj

ą

mechanizm pobierania i

odtwarzania plików d

ź

wi

ę

kowych.

Metody klasy

Applet

przeznaczone do pobierania plików d

ź

wi

ę

kowych:

public static final AudioClip newAudioClip(URL url)

Pobiera plik d

ź

wi

ę

kowy o podanym adresie URL.

public AudioClip getAudioClip(URL url)

Zwraca obiekt klasy

AudioClip

dla podanego adresu URL. Argument

typu

URL

podaje absolutny adres pliku. Jest on ładowany ale nie jest

jeszcze odtwarzany.

public AudioClip getAudioClip(URL url, String name)

Zwraca obiekt klasy

AudioClip

. Argument typu URL podaje absolutny

adres, a drugi argument podaje dokładne poło

ż

enie pliku d

ź

wi

ę

kowego

wzgl

ę

dem pierwszego adresu. Plik jest ładowany ale nie jest jeszcze

odtwarzany.

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 38

public void play(URL url)

Odtwarza plik d

ź

wi

ę

kowy znajduj

ą

cy si

ę

pod podanym adresem

URL

.

Nie ma

ż

adnego efektu, gdy plik nie istnieje.

public void play(URL url, String name)

Odtwarza plik d

ź

wi

ę

kowy znajduj

ą

cy si

ę

pod adresem zło

ż

onym z

adresu

URL

i wzgl

ę

dnego adresu

name.

Nie ma

ż

adnego efektu, gdy plik

nie istnieje.

Interfejs

AudioClip

wyznacza metody dla odtwarzania d

ź

wi

ę

ku:



loop

odtwarza obiekt klipu w p

ę

tli,

play -

odtwarza obiekt klipu raz,

stop -

zatrzymuje odtwarzanie klipu

.

Przykład.

Aplet

SoundExample

ilustruje ładowanie i odtwarzanie wielu

plików d

ź

wi

ę

kowych jednocze

ś

nie.

AudioClip onceClip, loopClip;
onceClip = applet.getAudioClip(getCodeBase(), "bark.au");

// Utwórz klip

loopClip = applet.getAudioClip(getCodeBase(), "train.au");

// Utwórz klip

onceClip.play();

// Odtwórz raz

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 39

loopClip.loop();

// Wykonuj odtwarzanie w pętli.

loopClip.stop();

// Zatrzymaj odtwarzanie pojedyncze lub w pętli.

P

ę

tla jest zatrzymywana, gdy u

ż

ytkownik opuszcza stron

ę

apletu i

wznawiana, gdy u

ż

ytkownik powraca do strony apletu. Dzieje si

ę

tak

dzi

ę

ki wła

ś

ciwemu zdefiniowaniu metod

stop

i

start

w aplecie:

public void stop() {

// looping jest polem typu boolean - początkowo ustawionym na "false";
// jest ustawiane na "true" gdy użytkownik wybiera przycisk w rodzaju
// "Odtwarzaj w petli" i na "false" gdy przycisk w rodzaju "Zatrzymaj".

if (looping) {
loopClip.stop();

// Zatrzymaj pętlę odtwarzania dźwięków

}
}
public void start() {
if (looping) {
loopClip.loop();

// Restartuj pętlę odtwarzania dźwięków

}
}

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 40

6) Parametry apletu

Parametry s

ą

dla apletu tym czym opcje linii komend dla programu.

Decyzje projektowe:

(1) Jakie parametry i z jakimi domy

ś

lnymi warto

ś

ciami powinien

przyjmowa

ć

aplet?

(2) Metoda

getParameter

- aplet pobiera poprzez ni

ą

warto

ś

ci

parametrów zadane przez u

ż

ytkownika.

(3) Metoda

getParameterInfo

- aplet udost

ę

pnia u

ż

ytkownikowi

informacj

ę

o swoich parametrach.

public String getParameter(String name)

Zwraca warto

ść

(lub

null

) podanego parametru w znaczniku HTML. Np.

dla znacznika:

<applet code="Clock" width=50 height=50>
<param name="Color" value="blue">
</applet>

wywołanie

getParameter("Color")

zwróci wynik

"blue"

.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 41

public String[][] getParameterInfo()

Zwraca informacj

ę

o parametrach istotnych dla danego apletu w postaci

tablicy napisów. Ka

ż

dy napis powinien mie

ć

3 cz

ęś

ci: nazw

ę

, typ, opis.

Np.:

String pinfo[][] = {
{"fps", "1-10", "frames per second"},
{"repeat", "boolean", "repeat image loop"},
{"imgs", "url", "images directory"}
};

Jakie parametry ?

Zale

ż

y to od funkcji apletu. Np. parametry charakterystyczne dla

obrazów lub d

ź

wi

ę

ków, poło

ż

enia plików, wygl

ą

du ramki apletu.

Jakie nazwy parametrów?

XXXSOURCE lub XXXSRC - dla plików danych. Np. IMAGESOURCE.
NAME - tylko dla nazwy apletu.

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 42

Jakie warto

ś

ci przyjmuj

ą

parametry ?

Wszystkie warto

ś

ci s

ą

napisami (String). Napis jest interpretowany

przez aplet na ró

ż

ne sposoby. Typowe interpretacje napisu to:



URL ,



liczba całkowita ,



liczba zmienno-przecinkowa ,



warto

ść

logiczna - "true"/"false" lub "yes"/"no" ,



napis,



lista powy

ż

szych danych.

Jaka b

ę

dzie warto

ść

domy

ś

lna parametru?

Nawet gdy u

ż

ytkownik nie przeka

ż

e warto

ś

ci parametru aplet powinien

pracowa

ć

poprawnie dzi

ę

ki istnieniu warto

ś

ci domy

ś

lnych.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 43

Przykład.

Nasza klasa nazywa si

ę

AppletButton

. Jej GUI składa si

ę

z przycisku i

etykiety oddaj

ą

cej jej status. W wyniku klikni

ę

cia przycisku aplet

wy

ś

wietla okno na ekranie. Klasa ta mo

ż

e by

ć

wykorzystywana w wielu

dalszych przykładach, gdy

ż

jest bardzo elastyczna. T

ę

elastyczno

ść

zapewniaj

ą

jej parametry. U

ż

ytkownik mo

ż

e okre

ś

li

ć

: typ wy

ś

wietlanego

okna, tytuł okna, wysoko

ść

i szeroko

ść

okna, etykiet

ę

samego przycisku,

Np.
znacznik

<

APPLET

>

dla

AppletButton

mo

ż

e wygl

ą

da

ć

nast

ę

puj

ą

co:

<APPLET CODE=AppletButton.class CODEBASE=example
WIDTH=350 HEIGHT=60>
<PARAM NAME=windowClass VALUE=BorderWindow>
<PARAM NAME=windowTitle VALUE="BorderLayout">
<PARAM NAME=buttonText
VALUE="Click here to see a BorderLayout in action">
</APPLET>

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 44

Kod dla interpretacji wyniku metody

getParameter

Nale

ż

y zdefiniowa

ć

kod interpretuj

ą

cy wynik metody zwracaj

ą

cej

warto

ść

parametru podan

ą

przez u

ż

ytkownika.

public String getParameter(String name)

Np.

int requestedWidth = 0;
. . .
String windowWidthString = getParameter("WINDOWWIDTH");
if (windowWidthString != null) {
try {

// Spróbuj dokona

ć

konwersji napisu do liczby całkowitej

.

requestedWidth = Integer.parseInt(windowWidthString);
} catch (NumberFormatException e) {

// Tutaj pobierz domy

ś

ln

ą

warto

ść

parametru.

}
}

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 45

Metoda

getParameter

umo

ż

liwia tak

ż

e pobranie warto

ś

ci

atrybutów

dla

znacznika apletu

<APPLET>

.

Przykład

.

W naszej klasie

AppletButton

zdefiniowali

ś

my pobieranie

parametrów apletu.

String windowClass;
String buttonText;
String windowTitle;
int requestedWidth = 0;
int requestedHeight = 0;
. . .
public void init() {
windowClass = getParameter("WINDOWCLASS");
if (windowClass == null) {
windowClass = "TestWindow";
}
buttonText = getParameter("BUTTONTEXT");
if (buttonText == null) {

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 46

buttonText = "Click here to bring up a " + windowClass;
}
windowTitle = getParameter("WINDOWTITLE");

if (windowTitle == null) { windowTitle = windowClass; }
String windowWidthString = getParameter("WINDOWWIDTH");
if (windowWidthString != null) {
try { requestedWidth = Integer.parseInt(windowWidthString);
} catch (NumberFormatException e) {

// ... tu ustal domy

ś

ln

ą

warto

ść

dla parametru "szeroko

ść

".

}
}
String windowHeightString = getParameter("WINDOWHEIGHT");
if (windowHeightString != null) {
try { requestedHeight = Integer.parseInt(windowHeightString);
} catch (NumberFormatException e) {

// ... tu ustal domy

ś

ln

ą

warto

ść

dla parametru "wysoko

ść

".

}
}

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 47

Przekazywanie informacji o parametrach

Nale

ż

y zdefiniowa

ć

metod

ę

getParameterInfo()

tak, aby przegl

ą

darka

mogła pobra

ć

informacj

ę

o parametrach naszego apletu.

Metoda

getParameterInfo

zwraca tablic

ę

3-elementowych tablic typu

String

.

W ka

ż

dej z tych 3-elementowych tablic 1-szy napis jest nazw

ą

parametru, drugi podaj informacj

ę

o typie warto

ś

ci dla parametru a trzeci

opisuje znaczenie parametru.

Przykład.

Implementacja

getParameterInfo

w klasie

Animator

, w której okre

ś

lono

13 parametrów, umo

ż

liwiaj

ą

cych u

ż

ytkownikowi dostosowanie animacji

do swoich potrzeb.

public String[][] getParameterInfo() {
String[][] info = {

// Nazwa parametru Typ wartości Opis

{"imagesource", "URL", "a directory"},
{"startup", "URL", "displayed at startup"},

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 48

{"background", "URL", "displayed as background"},
{"startimage", "int", "start index"},
{"endimage", "int", "end index"},
{"namepattern", "URL", "used to generate indexed names"},
{"pause", "int", "milliseconds"},
{"pauses", "ints", "milliseconds"},
{"repeat", "boolean", "repeat or not"},
{"positions", "coordinates", "path"},
{"soundsource", "URL", "audio directory"},
{"soundtrack", "URL", "background music"},
{"sounds", "URLs", "audio samples"},
};
return info;
}

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 49

7) Znacznik

<APPLET>

Znamy ju

ż

najprostsz

ą

posta

ć

znacznika

<APPLET>

:

<APPLET CODE=KlasaPochodnaOdApplet.class WIDTH=liczba1Int
HEIGHT=liczba2Int>
</APPLET>

Parametry - znacznik

<PARAM>

U

ż

ytkownik przekazuje parametry apletu korzystaj

ą

c ze znaczników

<PARAM>

, które nale

ż

y umie

ś

ci

ć

zaraz po znaczniku

<APPLET>

danego apletu.

<APPLET CODE=NazwaApletu.class WIDTH=liczba1Int HEIGHT=liczb2Int>
<PARAM NAME=parametr1Nazwa VALUE=wartość1>
<PARAM NAME=parametr2Nazwa VALUE=wartość2>
</APPLET>

Przykład.

<APPLET CODE="Animator.class" WIDTH=460 HEIGHT=160>

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 50

<PARAM NAME="imageSource" VALUE="images/Beans">
<PARAM NAME="backgroundColor" VALUE="0xc0c0c0">
<PARAM NAME="endImage" VALUE=10>
<PARAM NAME="soundSource" VALUE="audio">
<PARAM NAME="soundtrack" VALUE="spacemusic.au">
<PARAM NAME="sounds"
VALUE="1.au|2.au|3.au|4.au|5.au|6.au|7.au|8au|9.au|0.au">
<PARAM NAME="pause" VALUE=200>
</APPLET>

Alternatywny kod HTML i alternatywny tekst



Alternatywnym kodem HTML jest dowolny tekst wyst

ę

puj

ą

cy pomi

ę

dzy

znacznikami

<APPLET>

i

</APPLET>

po znacznikach

<PARAM>

-

przegl

ą

darki Javy, rozpoznaj

ą

ce znacznik

<APPLET>

, ignoruj

ą

alternatywny kod

HTML

– w przeciwnym razie wy

ś

wietl

ą

go.



Mo

ż

na te

ż

przegl

ą

darkom przekaza

ć

alternatywny tekst posługuj

ą

c si

ę

atrybutem

ALT

w znaczniku

<APPLET>

Je

ś

li przegl

ą

darka nie mo

ż

e

wy

ś

wietli

ć

apletu wy

ś

wietli alternatywny tekst apletu.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 51

Przykład

<APPLET CODE="Animator.class" WIDTH=460 HEIGHT=160
ALT=

"Jeśli widać animację to znaczy, że aplet się wykonuje"

>

<PARAM NAME="imageSource" VALUE="images/Beans">
<PARAM NAME="backgroundColor" VALUE="0xc0c0c0">
<PARAM NAME="endImage" VALUE=10>
<PARAM NAME="soundSource" VALUE="audio">
<PARAM NAME="soundtrack" VALUE="spacemusic.au">
<PARAM NAME="sounds"
VALUE="1.au|2.au|3.au|4.au|5.au|6.au|7.au|8au|9.au|0.au">
<PARAM NAME="pause" VALUE=200>

Przeglądarka ignoruje znacznik &lt;APPLET&gt; !

</APPLET>

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 52

Specyfikacja katalogu apletu

Domy

ś

lnym poło

ż

eniem apletu jest bie

żą

cy katalog strony HTML z

apletem. Je

ś

li aplet podany jest poprzez pakiet, to poszukuje si

ę

go na

ś

cie

ż

ce pakietu, "wychodz

ą

cej" z bie

żą

cego katalog.

Je

ś

li aplet ma by

ć

w innym miejscu posłu

ż

y

ć

si

ę

nale

ż

y atrybutem

CODEBASE

.

<APPLET CODE=AppletSubclass.class CODEBASE=aURL
WIDTH=anInt HEIGHT=anInt>
</APPLET>

Je

ś

li aURL jest wzgl

ę

dnym URL to "podczepiony" zostanie pod bie

żą

cy

katalog strony HTML. Je

ś

li aURL jest absolutnym URL to mo

ż

e

oznacza

ć

nawet katalog zdalnego komputera w sieci.

background image

4. Pakiet

java.applet

W. Kasprzak: Programowanie zdarzeniowe

4 - 53

Archiwizacja plików apletu

Je

ś

li kod apletu składa si

ę

z wielu plików to opłaca si

ę

je zarchiwizowa

ć

w postaci jednego pliku.
Standardowy format archiwum w Javie to

JAR

(oparty na formacie ZIP).

Pliki typu

JAR

podaje si

ę

w atrybucie

ARCHIVE

znacznika

<APPLET>

.

Mo

ż

na poda

ć

na raz wiele plików archiwizacyjnych po przecinku.

Np.

<APPLET CODE="AppletSubclass.class" ARCHIVE="file1, file2"

WIDTH=anInt HEIGHT=anInt>

</APPLET>

Inne atrybuty znacznika

<APPLET>

ALIGN, VSPACE, HSPACE, NAME


Wyszukiwarka

Podobne podstrony:
Proz S2 id 402992 Nieznany
Proz S12 id 402989 Nieznany
Proz S9 id 402999 Nieznany
Proz S8 id 402998 Nieznany
Proz S13 id 402990 Nieznany
Proz S3 id 402993 Nieznany
Proz S14 id 402991 Nieznany
Proz S7 id 402997 Nieznany
Proz S10 id 402987 Nieznany
Proz S5 id 402995 Nieznany
Proz S2 id 402992 Nieznany
Proz S12 id 402989 Nieznany
chemia proz maj 2011 cke id 112 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany

więcej podobnych podstron