kramann.info
© Guido Kramann

Login: Passwort:










2 Erstellen einer GUI-KLasse, die sowohl als Applet, als auch als Applikation verwendet werden kann

  • Die Klasse Applet bietet bereits viele praktische Eigenschaften, die es leicht machen, grafische Benutzeroberflächen zu erstellen.
  • Wenn man ein Applet wie eine Applikation von der Konsole aus starten möchte, ist die einfachste Möglichkeit dabei den Applet-Viewer zu verwenden.
  • Er erlaubt es ein in einer Internetseite eingebettetes Applet in einem Fenster anzuzeigen.
  • Für das vorangehende Applet würde der Konsolenbefehl lauten: appletviewer index.html
  • Jedoch gilt auch hier das Sandbox-Prinzip: Es ist beispielsweise auch bei Start eines Applets mittels Appletviewer für das Applet nicht erlaubt Fileoperationen auszuführen.
  • Eine Alternative, die bei Aufhebung des Sandbox-Prinzips erlaubt die komfortablen Eigenschaften eines Applets zu verwenden, kann folgendermaßen realisiert werden:
  • Man ergänzt die Applet-Klasse um eine main-Methode, in der ein Objekt der Applet-Klasse erst erzeugt und dann in ein Fenster eingebettet wird.
  • Auf diese Weise ist es einerseits möglich, das Applet wie gewöhnlich in eine Internetseite einzubetten.
  • Alternativ kann dieses Programm dann aber auch von der Konsole aus gestartet werden und in diesem Fall wird es von der JVM als vollwertige Applikation angesehen und die für Applets gültigen Sicherheitsbeschränkungen gelten nicht.
  • In der folgenden Klasse "Hybrid" ist diese Möglichkeit exemplarisch umgesetzt.
  • Die in der Methode start() eingefügte File-Operation funktioniert dabei lediglich dann, wenn das Programm von der Konsole aus als Applikation gestartet wird.
  • Diese Technik erlaubt es, komfortabel Anwendungen aufzubauen
import java.applet.*;
import java.awt.*;
import javax.swing.*;
import java.io.*;
public class Hybrid extends Applet
{
    public String text;
    public String paramtext;
    public int x,y;
    public void init()
    {
        text="Hallo";
        paramtext="Parameter1";
        x=100;
        y=150;
    }
    public void start()
    {
        System.out.println("Das Applet wurde gestartet.");
        try
        {
            PrintWriter pw = new PrintWriter(new FileWriter("test.txt"));
            pw.println("Test");
            pw.close();
        }
        catch(Exception e)
        {
            System.out.println("Fileoperationen nicht erlaubt!");
            System.out.println(e);
        }
    }
    public void paint(Graphics g)
    {
        g.setColor(new Color(200,255,200));
        g.fillRect(5,5,200,100);
        g.setColor(new Color(0,0,0));
        g.drawString(text,10,100);
        g.setColor(new Color(255,0,0));
        g.drawString(paramtext,x,y);
    }
    public static void main(String[] args)
    {
        Hybrid hb = new Hybrid();
        hb.init();
        hb.start();
        hb.repaint();
        JFrame mF = new JFrame("Differentialgeometrie");
        mF.getContentPane().add(hb);
        mF.pack();
        mF.setSize(500,500);
        mF.setLocation(10,10);
        mF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mF.setVisible(true);
    }
}

Code 2-1: Beispiel eines Java-Programms, das sowohl als Applet, als auch als Applikation verwendet werden kann.