Naučte se Javu – applety

19. září 2002

Pojďme se podívat, jak vytvořit applet, který má být součástí HTML stránky. Na jednoduchých příkladech popíši a vysvětlím, co je třeba udělat pro to, abyste sestrojili funkční applet, který využijete pro obohacení možná právě těch vašich stránek. Nechybí i adresy, kde lze applety najít.

Na úvod se pojďme podívat na jednoduchý příklad appletu, který je zobrazen na této stránce. Jeho kód následuje za příkladem. Tento applet nedělá vůbec nic, jen vypisuje nápis “Já jsem applet!”.

MujApplet.java:

import java.applet.*;
import java.awt.*;
public class MujApplet extends Applet {
  public void paint(Graphics g) {
    g.setFont( new Font(„Helvetica“, Font.BOLD, 32) );
    g.setColor( Color.red );
    g.drawString(„Já jsem applet!“, 25, 50);
    }
}

Pokud chcete napsat applet, musíte vytvořit třídu, která bude dědit od třídy java.applet.Applet. Tato třída obsahuje několik metod, které jsou spuštěny, pokud nastane patřičná situace. Jedná se především o metody paint(), init(), destroy(), jejich popis najdete v následujících odstavcích.

Kreslení v appletu

Pokud chcete v Appletu vykreslovat, využijete metodu paint(), která je vyvolána pokaždé, když má dojít k překreslení appletu. Její použití je vidět na předešlém příkladu. Metoda má jeden parametr typu java.awt.Graphics, pomocí něhož se vykresluje (obsahuje informace o ploše, do které se má kreslit). V příkladu je navíc vidět použití tříd Color a Font reprezentující barvu resp. písmo (obě jsou z balíku java.awt). V metodě setFont() je přímo vytvořen objekt a předán jako parametr aniž by byl ukládán do proměnné.

Inicializace a rušení

Metoda init() je spuštěna jedenkrát při inicializaci appletu. Do ní umístěte případnou inicializaci proměnných. Podobně metoda destroy(). Ta je naopak volána při rušení objektu appletu. K tomu však u některých prohlížečů nedochází bezprostředně po zavření appletu (např. přesunem na jinou stránku), proto na vyvolání této metody příliš nespoléhejte.

Začlenění appletu do stránky

Pro vložení appletu do HTML stránky se používá značka APPLET. Ta má klíčové parametry code obsahující název třídy appletu, codebase udávající cestu k této třídě, dále witdh a height, které určují rozměry appletu. Odkaz na úvodní příklad by vypadal následovně:

<applet code=“MujApplet.class“ width=200 height=80>
</applet>

Pokud je applet součástí nějakého balíčku, musí parametr code obsahovat jméno včetně jména balíčku (Př. MujBalik.MujApplet.class).

Java applety lze rovněž spouštět pomocí utility appletviewer, která je součástí JDK (Java Development Kit). Parametrem této utility je soubor HTML, který odkazuje na applet, nikoli samotná třída:

appletviewer MujApplet.html

Reakce na události

Pokud chcete, aby váš applet reagoval na činnost myši a klávesnice, napište reakci na tyto události. To provedete registrací tzv. Event Listeneru. Jsou to třídy, které sledují události. Pokud k nějaké dojde, reagují na ni. Jejich použití jste mohli vidět v minulém díle seriálu. V následujícím příkladu bude tento mechanismus rovněž použit, podrobně se s ním však seznámíme v samostatném díle.

Následující applet reaguje na pohyb a stisk tlačítka myši. Umožňuje kreslit na plochu stisknutím tlačítka myši. Navíc tento applet přebírá parametr barva od HTML stránky, ze které je spuštěn. Pokud tento parametr odpovídá nějaké barvě definované v Javě (ve třídě java.awt.Color), bude se čára kreslit touto barvou. Pokud ne, použije se černá.

kresleni.java:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class kresleni extends Applet {
  private int x0, y0;
  private Color barva;
  /** Inicializační metoda */
  public void init() {
    // načtení parametru prohlížeče
    // pokud parametr „barva“ není nebo neodpovídá barvě, nastaví se černá
    try {
      int R = Integer.parseInt(getParameter(„R“));
      int G = Integer.parseInt(getParameter(„G“));
      int B = Integer.parseInt(getParameter(„B“));
      barva = new Color (R, G, B);
      }
      // pokud paramtry nejsou nastaveny správně, použije se černá barva
      catch (Exception e) { barva = Color.black; }
    // nastavení zachycení událostí stisku myši (na metodu stisk)
    addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent e) {
          stisk(e);
          }
      });
    // nastavení zachycení událostí táhnutí myší na metodu na metodu tahnuti)
    addMouseMotionListener(new MouseMotionAdapter() {
        public void mouseDragged(MouseEvent e) {
          tahnuti(e);
          }
      });
    }
  /** Metoda getAppletInfo() poskytuje prohlížeči textový popis appletu. */
  public String getAppletInfo() {
    return „Applet, který umožňuje kreslení pomocí myši.“;
    }
  /** zpracovává událost táhnutí myší (posunu při držení tlačítka).
   * Vykresluje čáru od minulé pozice kurzoru k aktuální jeho pozici 
   */

  private void tahnuti(MouseEvent e) {
    Graphics g = this.getGraphics();
    g.drawLine(x0, y0, e.getX(), e. getY());
    x0 = e.getX();
    y0 = e.getY();
    }
  /** zpracovává událost stisku tlačítka myši */
  private void stisk(MouseEvent e) {
    x0 = e.getX();
    y0 = e.getY();
    }
}

Předávání parametrů

Pro předání parametru appletu se používá značka param uvnitř značky applet. Pro vložení našeho appletu s parametry R, G, B nastavenými na hodnoty červené, modré a zelené složky (0-255) zadáme do HTML stránky následující kód:

<applet code=“kresleni.class“ width=200 height=80>
  <param name=“R“ value=“10″>
  <param name=“G“ value=“50″>
  <param name=“B“ value=“100″>
</applet>

Na applety jsou kladena poměrně silná bezpečnostní omezení, jelikož může poměrně jednoduše dojít ke spuštění appletu na vašem počítači, aniž byste to věděli. Applet nesmí přistupovat k lokálním souborům, nesmí navazovat síťová spojení na jinou adresu, než je adresa, odkud byl nahrán.

Další aplety

Na internetu lze nalézt celou řadu appletů se zdrojovými kódy. Stačí zadat dotaz na některému z fulltextových vyhledávačů. Na serveru společnosti SUN Microsystems najdete řadu jednodušších appletů se zdrojovými kódy, vhodných pro studijní účely.

Dalším archivem, kde najdete velké množství (nejen) appletlů, je např. http://javaboutique.internet.com/.

Využití appletů

V současné době jsou applety často využívány ke grafickým efektům pro oživení stránek. Jejich nevýhodou oproti dynamickému HTML a JavaScriptu, je malá rychlost vzniklá nutností načítat velké množství tříd. Na druhou stranu možnosti Javy daleko přesahují využití pro blikající tlačítka či rozbalující se menu. Java applety lze často nalézt tam, kde skriptovací jazyky nestačí – složitější algoritmy, graficky či časově náročné prezentace. O tom se lze přesvědčit např. na zmíněných serverech. Další příklad použítí appletu je vidět na serveru Šachové centrum. Ten používá appletů pro hraní šachů přes Internet, kde je nutná blesková odezva (zejména při rychlích partiích).

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

1 komentář

  1. cxdr

    Říj 27, 2009 v 22:26 Odpovědět

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *