Tipy a triky pro webové vývojáře: Spuštění appletu v samostatném okně

Chtěl bych vytvořit applet v Javě, který by běžel v samostatném okně a nebyl přímo součástí stránky. Je možné ...


Chtěl bych vytvořit applet v Javě, který by běžel v samostatném okně a nebyl
přímo součástí stránky. Je možné tento applet vytvořit tak, aby jeho životnost
nebyla omezena pouze prohlížením stránky, ze které byl vyvolán?
Vytvoření okna, které se tváří samostatně a nezávisle na prohlížeči, není v
Javě problém. Stačí vytvořit instanci třídy Frame. Do nově vytvořeného okna
můžeme přidávat menu a další dialogové prvky, nebo do něj kreslit přímo
předefinováním metody paint().
V praxi bychom si tedy vytvořili novou třídu MojeOkno, která bude založena na
třídě Frame. Novou třídu uděláme velice jednoduchou bude nám stačit, když do
okna vypíše nějaký text.
Vytvoříme tedy konstruktor třídy MojeOkno(). V něm nastavíme jméno okna voláním
předka (super). Poté vytvoříme tlačítko s krátkým nápisem a vložíme je do okna.
Abychom mohli naše nově vzniklé okno někdy zavřít, musíme u něj implementovat
rozhraní WindowsListener, které slouží jako šablona pro obsluhu událostí okna.
Naše třída bude pro zjednodušení reagovat pouze na událost zavření okna. V
tomto případě zavolá metodu dispose(), která uvolní naše okno.
V samotném inicializačním kódu appletu stačí vytvořit instanci našeho okna v
proměnné frame, nastavit velikost našeho okna a pomocí metody frame. show()
okno zobrazit.
Po přeložení získáme souborSamostatneOkno.class, který již můžeme zařadit do
stránky jako applet. My však nechceme, aby byl přímo v prohlížeči nějaký applet
vidět. To můžeme snadno obejít tím, že u appletu nastavíme nulové rozměry a
přesuneme ho na pravý okraj obrazovky, kde si ho nikdo nemůže všimnout:
(WIDTH=0 HEIGHT=0 HSPACE=0 VSPACE=0 ALIGN=RIGHT)
Takto vytvořené okno zůstane otevřené i po přechodu na jinou stránku. Pokud
bychom chtěli okno automaticky zavřít při změně stránky, museli bychom ve třídě
SamostatneOkno definovat metodu destroy(), která uvolní okno pomocí
frame.dispose().
Okno se (bohužel, ovšem současně samozřejmě) zavře po uzavření prohlížeče,
protože ten oknu poskytuje interpret Javy.

Applet SamostatneOkno.java
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
// Applet, který zobrazí samostatné okno
public class SamostatneOkno extends Applet { // Instance nového okna MojeOkno
frame; // Inicializace appletu public void init() { frame = new MojeOkno(); //
Vytvoření okna frame.setSize(new Dimension(400,200)); // Nastavení rozměrů okna
frame.show(); // Zobrazení okna }
}
// Třída s definicí samostatného okna
class MojeOkno extends Frame { Label label1 = new Label(); // Popiska pro
// zobrazení textu // Třída reagující na události vysílané oknem private class
WindowClose implements
WindowListener { public void windowOpened (WindowEvent e) {} public void
windowClosed (WindowEvent e) {} public void windowIconified (WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {} public void windowActivated
(WindowEvent e) {} public void windowDeactivated(WindowEvent e) {} public void
windowClosing (WindowEvent e) { dispose(); // Zavření okna } } // Konstruktor
okna MojeOkno() { super("Moje aplikace jako samostatné okno"); // Nastavení
titulku okna label1.setFont(new Font("SansSerif", 1, 50)); // Vytvoření popisky
label1.setText("Moje okno!!!"); label1.setAlignment(1); this.setLayout(new
BorderLayout());
// Nastavení layout manageru this.add(label1, BorderLayout.CENTER);
// Přidání popisky do okna this.addWindowListener(new WindowClose());
// Aktivace obsluhy událostí }
}

8 2253 / pah









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.