Część 4.1. Applety - wprowadzenie
Przypomnij sobie nasz pierwszy program, który pisaliśmy na początku tego kursu. Wyglądał on tak: class PierwszyProgram { public static void main (String args[]) { System.out.println("Mój pierwszy program"); } } Ten sam program zrobiony jako applet będzie natomiast miał taki wygląd: import java.applet.Applet; import java.awt.Graphics; public class PierwszyApplet extends Applet { public void paint(Graphics g) { g.drawString("Mój pierwszy program", 50, 25); } } Umieszczenie appletu na stronie WWW wymaga dodania znacznika <APPLET> . . . </APPLET>. Umieszczenie naszego appletu na stronie będzie wyglądało następująco: <APPLET CODE="nazwa.class" WIDTH=x HEIGHT=y> <PARAM NAME="NazwaParametru1" VALUE="WartośćParametru1"> ..... </APPLET> gdzie znacznik <APPLET> posiada między innymi atrybuty:
Ponieważ nasz applet jest bardzo prosty i nie wymaga żadnych parametrów, to umieszczenie go na stronie będzie wyglądało następująco: <APPLET CODE="PierwszyApplet.class" WIDTH=150 HEIGHT=25></APPLET> A tak będzie wyglądał nasz applet wstawiony na stronę WWW: Każdy applet dziedziczy z klasy java.applet.Applet wymaga więc dołączenia tego pakietu do kompilowanego programu. Nasz applet zawsze będzie dziedziczył po klasie Applet z pakietu java.applet. Jeżeli dodatkowo chcemy cokolwiek w applecie pisać lub rysować, to musimy dołączyć pakiet java.awt.Graphics zawierający klasy umożliwiające rysowanie i pisanie w appletach. Jak widać nasz applet nie posiada metody main. Sterowanie appletem odbywa się zupełnie inaczej, niż standardową aplikacją (zobacz funkcje specjalne w appetach). Typowa struktura appletu napisanego w Javie wygląda ta: import java.applet.*; import java.awt.*; public class NazwaAppletu extends Applet implements Runnable { ... deklaracja zmiennych programu ... public void init() { ..... // działania, które mają być wykonane podczas ładowania programu ..... } public void start() { ..... // działania wykonane przy każdorazowym uruchomieniu programu ..... } public void stop() { ..... // działania wykonane przy zatrzymaniu programu ..... } public void destory() { ..... // działania wykonane przy usuwaniu programu z pamięci ..... } public void paint(Graphics g) { ..... // wyświetlenie grafiki programu ..... } public void run() { ..... // opis działania wątku programu ..... } ..... własne metody programu ..... } Oczywiście - co widać w naszym applecie - nie wszystkie metody muszą wystąpić. Powyższa struktura opisuje pełne możliwości budowania appletów w Javie. W wieli przypadkach używamy tylko niektórych spośród specjalnych metod appletów, gdyż działanie metod dziedziczonych z klasy Applet jest w zupełności wystarczające. Na zakończenie tej części applet prezentujący użycie funkcji specjalnych oraz uwidaczniający czas życia programu. Przy przechodzeniu do innych okien i powrocie do bieżącego powinieneś zaobserwować zmianę wartości wyświetlanych zmiennych. Oto kod programu: import java.applet.Applet; import java.awt.Graphics; import java.awt.Font; public class Cykl extends Applet { private int iInit, iStart, iStop, iDestroy, iPaint; private Font font; // klasa umożliwiająca definiowanie używanych w applecie czcionek public void init() { font = new Font("Arial", Font.BOLD, 14); iInit = dodajInfo(iInit); } public void start() { iStart = dodajInfo(iStart); } public void stop() { iStop = dodajInfo(iStop); } public void destroy() { iDestroy = dodajInfo(iDestroy); } int dodajInfo(int i) { repaint(); return ++i; } public void paint(Graphics g) { g.setFont(font); // rysowanie ramki wokół appletu g.drawRect(0, 0, size().width - 1, size().height - 1); // wyświetlenie wartości wszystkich zmiennych appletu g.drawString("Inicjalizacji", 10, 20); g.drawString(""+iInit, 200, 20); g.drawString("Uruchomień", 10, 40); g.drawString(""+iStart, 200, 40); g.drawString("Zatrzymań", 10, 60); g.drawString(""+iStop, 200, 60); g.drawString("Usunięć", 10, 80); g.drawString(""+iDestroy, 200, 80); g.drawString("Rysowań", 10,100); g.drawString(""+(++iPaint), 200, 100); } } A oto i sam applet w działaniu:
|