Appletek Java tutorial Copyright á 2000-2002, Kozsik Tama s
Mi is egy applet? ő Haszna ljuk a java.applet csomagot ő Az Applet oszta ly a Panel lesza rmazottja ő Az appletek az Applet oszta ly pe lda nyai, azaz egy objektum, e s nem egy alkalmaza s ő Egy applet a b¨ nge szoablaka ban egy terólet, amire kirajzolhatja maga t (grafikus felh. fel.) ő Persze, ha akar - e s megengedik neki - nyithat u jabb Window-kat (pl. Frame-eket)
Hogyan haszna lom?
ő Ezt beteszem egy html fa jlba, pl. hello.html
ő ő ő ő ő
A Java nyelv elsodleges sza mu rekla mja HTML oldalak aktıvva teve se hez Kisalkalmaza s WEB-b¨ nge szoa ltal futtatott Java program Egy lehetose g (a sok k¨ zól) a Java-ban ha lűzatos programok ke szıte se re ő Grafikus felhaszna lűi felólet– programocska
Pe lda import java.applet.Applet; import java.awt.*; public class HelloApplet extends Applet { public HelloApplet(){ add(new Label("Hello")); } }
ő Az oszta ly e s a konstruktor is publikus
Hia nyos HTML fa jl
ő Noha nem helyes HTML dokumentum, a b¨ nge szok t¨ bbse ge ezt is tudja e rtelmezni
1 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Kiprűba la s ő Legyen a HTML fa jl e s a hivatkozott Java class fa jl ugyanabban a k¨ nyvta rban ő Egy WEB-b¨ nge szovel jelenıtsók meg a HTML oldalt ő Ha me gsem megy:
Feladat ő Az Emberke programot ırjuk a t appletre!
É Nincs engede lyezve a b¨ nge szoben a Java É Nem publikus az appletónk vagy a parame ter ne lkóli konstruktora É Tu l re gi a b¨ nge szobe integra lt virtua lis ge p ő a Java plug-in segıthet
Mitol fut az applet? ő A b¨ nge szobet¨ lti a HTML oldalt
Java tutorial Copyright á 2000-2002, Kozsik Tama s
appletviewer ő A b¨ nge szok nem frissıtik a ma r egyszer bet¨ lt¨ tt appletet - hia ba a refresh gomb ő Ke nyelmetlen ıgy fejleszteni É minden va ltoztata s uta n ki kell le pni a bónge szobol, majd u jra bele pni
ő Megolda s: appletviewer ő A fejlesztoi rendszer re sze (mint javac, java) ő Egy egyszer– b¨ nge szo, mely csak az appleteket jelenıti meg ő Gyorsan elindul...
É let¨ lti egy HTTP szervertol É beolvassa fa jlbűl a helyi ge pen
ő E rtelmeze se k¨ zben megtala lja az applet tag-et ő Ahonnan a HTML oldalt, let¨ lti a class fa jlt ő Pe lda nyosıtja az applet oszta lyt a parame ter ne lkóli konstruktorral (...) ő Hozza rendel egy teróletet a b¨ ngeszoablakbűl, width e s height alapja n (k¨ telezomegadni) ő Kirajzolja, e s veze rle st ad neki (AWT sza lat)
appletviewer indıta sa $ ls HelloApplet.class HelloApplet.java hello.html $ appletviewer hello.html
2 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Mire valűk az appletek? ő Egy ha lűzaton keresztól haszna lt program grafikus felhaszna lűi felólete É Gyakran egy ”ve konyÍ kliens egy kliens-szerver architektu ra ju programban
ő A kliens sza mıtűge pet terheloprogram
Biztonsa g ő Az appletet ha lűzatrűl t¨ ltjók le ő Vesze lyes, nem szeretne nk, ha aka rmit megtehetne ő Az appletekre szigoru biztonsa gi eloıra sok vonatkoznak É szigoru bbak, mint az applika ciűk esete n
É A CPU-t e s a meműria t a kliens ge pen foglalja
ő Extra jogokat lehet persze adni nekik...
Mit nem tehet egy applet ő Alape rtelmeze sben egy applet É nem haszna lhat fa jlokat a kliens sza mıtűge pen É nem nyithat ha lűzati kapcsolatot ma s ge pre, mint ahonnan let¨ lt¨ tte k É nem hıvhat natıv (nem Java-ban ırt) metűdusokat
ő Jogosultsa gokat biztosıtű fa jlokkal ez megva ltoztathatű ő Ala ırt appletek: valaki kezesse get va llal e rtók
Feladat ő Ird a t a sz¨ vegszerkesztoprogramot applette ! Ne a menós va ltozatot, mert az Applet oszta ly nem tudja a menósort... ő Prűba ld futtatni loka lis ge pen, illetve ta volrűl...
Appletek parame tereze se Java tutorial Copyright á 2000-2002, Kozsik Tama s
ő A b¨ nge szomindig a parame ter ne lkóli konstruktort hıvja meg É ga z, ha nincs ilyen, vagy valami nem publikus É honnan is venne parame tereket...
ő ő ő ő
Nem parame terezhetoa megszokott műdon Parame terezzók a HTML fa jlbűl Csak String parame terek Trókk¨ s műdon jut hozza a parame terekhez
3 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Parame teres applet tag
Parame ter a tve tele import java.applet.Applet; import java.awt.*; public class HelloApplet extends Applet { public void init(){ add(new Label( getParameter("cımke"))); add(new Button( getParameter("gomb"))); } }
Csak az init() metűdusban hıvhatű!
Ha elmarad a parame ter...
Feladat
import java.applet.Applet; import java.awt.*; public class HelloApplet extends Applet { public void init(){ String s = getParameter("cımke"); if( s==null ) s = "
"; add(new Label(s)); } }
ő Az Emberke appletet lehessen parame terezni, hogy a keze kezdetben merre legyen: fel, vagy le ő Ha egyik sem, ırjunk ki hibaózenetet a szabva nyos hibacsatorna ra, e s legyen a keze lefele
Szabva nyos kimenet: java konzol Java tutorial Copyright á 2000-2002, Kozsik Tama s
ő Hol jelenik meg a szabva nyos kimenet e s hibacsatorna rendes b¨ nge szok (nem appletviewer) esete n? ő Bekapcsolhatű az u n. Java konzol ő Innen tudhatjuk meg pl. a hiba k oka t... ő Prűba ld ki az Emberke appletet ıgy!
4 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Applet e s applika ciű egyszerre ő Sokszor u gy ke szıtónk el egy klienst, hogy az applika ciűke nt is e s appletke nt is indıthatű legyen ő Ehhez ógyesen kell hıvogatni az inicializa lű rutinokat ő Prűba ljuk ki mondjuk az Emberke applettel!
import java.applet.*; import java.awt.*; public class HelloApplet extends Applet { String s; ... public void inicializal(){ ... } ... /** Applikaciobol csak ez hıvhato! */ public HelloApplet(String s) {this.s=s; inicializal();} public static void main( String[] args ){ Frame f = new Frame("Hello"); f.add(new HelloApplet("hello")); ... } }
import java.applet.*; import java.awt.*; public class HelloApplet extends Applet { String s; public void init(){ s = getParameter("cımke"); if( s==null ) s = ""; inicializal(); } public void inicializal(){ add(new Label(s)); } /** Csak appletkent hıvhato! */ public HelloApplet(){} ... }
E letciklus-metűdusok ő Parame ter ne lkóli konstruktor É a b¨ nge szoelosz¨ r ezt hıvja meg
public void init() É k¨ zvetlenól a konstruktor uta n
public void start() É az init uta n, illetve mindig, amikor u jra az appletet tartalmazű oldalra le pónk
public void stop() É amikor elhagyjuk az appletet tartalmazű oldalt
Feladat Java tutorial Copyright á 2000-2002, Kozsik Tama s
ő Teszteljók az e letciklus-metűdusokat, e s hata rozzuk meg kapcsolatukat a public void paint( Graphics g ) metűdussal.
5 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Ke pek e s hangok
Copyright á 2000-2002, Kozsik Tama s
ő Az appleteket eleve arra tala lta k ki, hogy HTML oldalakat csicsa zzunk ki velók ő Igy ke pfa jlok megjelenıte se t e s hangfa jlok leja tsza sa t igaza n k¨ nny–ve tette k ő Az applet sza rmaza si helye rol egyszer–en let¨ lthetok, ne ha ny metűdussal k¨ nnyen haszna lhatűk ő Persze sima applika ciűkbűl is lehet ke peket e s hangokat kezelni, csak bonyolultabb...
Hangfa jl leja tsza sa
Hangfa jl leja tsza sa
Java tutorial
import java.applet.Applet; public class Hangos extends Applet { public void init(){ play( getCodeBase(), "audio/Laser.wav" ); } }
Ke pfa jl megjelenıte se import java.applet.Applet; public class Hangos extends Applet { Image kep; public void init(){ kep = getImage( getCodeBase(), "pics/hills.gif"); } public void paint(Graphics g){ g.drawImage(kep,0,0,this); } }
AudioClip clip = getAudioClip( getCodeBase(), "audio/Laser.wav" ); ... clip.play(); ... clip.loop();
Tudnivalűk ke pekrol ő A this a drawImage parame tere ben egy ImageObserver - az Applet megvalűsıtja... ő Let¨ lte s: megjelenıtle skor, nem a getImage hata sa ra É Lehetose g van elore let¨ lteni a ke pet: MediaTracker
ő Aszinkron t¨ ltodik le a ke p
6 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Anima ciűk ő Sok ke pet let¨ ltónk É pl. elore egy MediaTracker segıtse ge vel
ő Egy kól¨ n ve grehajta si sza lat csina lunk, mely va ltogatja a ke peket bizonyos idok¨ z¨ ne nt
Az applet tag parame terei ő Honnan kell let¨ lteni: a HTML oldalhoz ke pest relatıv URL is megadhatű: codebase="applets/classes" ő Gyakran az applet kűdja t (a haszna lt egye b nem standard - oszta lyok kűdja val e s) a haszna lt eroforra sfa jlokkal (ke pek, hangok) egyótt ¨ sszecsomagoljuk egy jar fa jlba, e s azt t¨ ltetjók le a b¨ nge szovel É hate konyabb tud lenni...
JApplet ő U gy, ahogy az awt-beli komponenseknek a Swing-ben is vannak megfeleloik, az Applet oszta lynak is van: javax.swing.JApplet ő Haszna lhatjuk Applet helyett appletekhez ő Tartalmazhat ma r JMenuBar-t is
Java tutorial Copyright á 2000-2002, Kozsik Tama s
7 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com