Informatik > Lexikon

Java-Anwendung

Eine minimale Java-Anwendung

Folgender Quelltext erzeugt eine minimale Java-Anwendung. Im Gegensatz zu einem Java-Applet kann eine Java-Anwendung mit einem Doppelklick aufgerufen werden - wie ein richtigtes Programm.

import java.awt.*;
import javax.swing.*;

public class Zeichnung extends JFrame
{

    public Zeichnung()
    {
        setSize(500,500);
        setTitle("Erste Java-Anwendung");
        setResizable(false);
        setVisible(true);
    }

    public void paint(Graphics g)
    {
        g.drawString("Hallo Welt",200,200);
    }

    public static void main(String[] args) 
    {
        new Zeichnung();
    }
}

Diese Java-Anwendung macht im Prinzip das Gleiche wie ein Java-Applet. Allerdings ist die "Mutterklasse" nicht mehr Applet oder JApplet, sondern JFrame. Statt der init-Methode schreiben wir für die Anwendung einen Konstruktor. Die paint-Methode bleibt unverändert, und zusätzlich brauchen wir eine main-Methode.

Der Konstruktor
  • Mit dem Befehl setSize wird die Größe der Java-Anwendung auf 500 x 500 Pixel festgelegt. Bisher hat diese Aufgabe der AppletViewer des Betriebssystems übernommen; bei dem Java-Frame müssen wir das selbst erledigen.
  • Der Befehl setTitle legt den Titel des Anwendungsfensters fest.
  • Mit setResizable legen wir fest, ob der Anwender das Fenster mit der Maus vergrößern oder verkleinern kann.
  • Und mit setVisible schließlich legen wir fest, ob das Fenster von Anfang an zu sehen ist oder nicht.
Die paint()-Methode

Eine Java-Anwendung kann eine "ganz normale" paint-Methode besitzen, die genau so arbeitet wie in einem Java-Applet.

Die main()-Methode

Das ist die Methode der Klasse, die immer als erste aufgerufen wird, wenn der Anwender einen Doppelklick auf das Programmsymbol ausführt, das an der Dateiendigung "class" erkennbar ist.

Die Anwendung kann durch Doppelklick auf das Symbol mit der Endung class gestartet werden

Wenn Sie die Anwendung in der BlueJ-Umgebung starten wollen, müssen Sie den orangefarbenen Kasten der Klasse mit der rechten Maustaste anklicken, aus dem sich dann öffnenden Kontextmenü wählen Sie die main-Methode aus.

Der einzige Befehl in der main-Methode in dem obigen Quelltext ist die Erzeugung eines Objektes der Klasse Zeichnung, ohne dass allerdings ein eigenes Objekt deklariert werden muss. Wenn das neue Objekt erzeugt wird, wird als erstes der Konstruktor ausgeführt, dann die paint-Methode.

Für Java-Einsteiger mag dieses Vorgehen etwas unübersichtlich erscheinen. Die main-Methode ist eine Methode der Klasse Zeichnung. Wenn Sie bisher - bei der Arbeit mit einem Applet - ein Objekt der Hauptklasse erzeugen wollten, mussten Sie in BlueJ immer den new-Befehl ausführen und dem Objekt dann einen Namen geben. Für das Starten eines Programmes mit einem einfachen Doppelklick ist dieses Vorgehen aber sehr umständlich. Daher hat eine Java-Anwendung eine main-Methode. Diese wird automatisch ausgeführt, wenn Sie auf das Symbol der Anwendung doppelklicken. Die main-Methode ihrerseits ruft dann normalerweise den Konstruktor der Klasse auf. Aber nicht automatisch, wie Sie an unserem Beispiel sehen können, sondern man muss das der main-Methode mitteilen.

Eine etwas komplexere Java-Anwendung

Hier wurde die minimale Java-Anwendung um zwei Textfelder und einen Button erweitert. In das obere Textfeld wird ein Text geschrieben, das untere Textfeld bleibt zunächst leer. Wenn man auf den "Kopieren"-Button klickt, wird der Text aus dem oberen Textfeld ausgelesen und in das untere Textfeld kopiert. Anfangen kann man mit dieser Java-Anwendung absolut nichts, es handelt sich einfach um ein leeres Grundgerüst, das Sie jetzt für Ihre speziellen Anwendungen aufrüsten können.

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Anwendung2 extends JFrame implements ActionListener
{
    TextField    eingabe, ausgabe;
    Button       ok;
    
    public Anwendung2()
    {
        setSize(500,500);
        setTitle("Eine simple Java-Anwendung");
        setResizable(false);
        setVisible(true);
        initComponents();
        init();
    }
   
    public void initComponents()
    {
        eingabe = new TextField();
        ausgabe = new TextField();
        ok      = new Button("Kopieren");
        
        setLayout(null);
        
        eingabe.setBounds(20, 70,300,40);
        ausgabe.setBounds(20,120,300,40);
        ok.setBounds(20,170,300,40);
        
        eingabe.setBackground(new Color(255,255,220));
        ausgabe.setBackground(new Color(220,255,255));
        
        eingabe.setFont(new Font("Arial",1,18));
        ausgabe.setFont(new Font("Arial",1,18));
        ok.setFont(new Font("Arial",1,18));        
        
        ok.addActionListener(this);
        
        add(eingabe);
        add(ausgabe);
        add(ok);
    }
    
    public void init()
    {
    }
    
    public void actionPerformed(ActionEvent event)
    {
       if (event.getSource() == ok)
       {
          ausgabe.setText(eingabe.getText()); 
       }
    }
    
    public static void main(String[] args) 
    {
        new Anwendung2();
    }
}

Interessant ist bei dieser einfachen Anwendung, dass auch gezeigt wird, wie man die Farben der Textboxen sowie die Schriftarten und Schriftgrößen anpassen kann.

Bei den Windows-Rechnern in meiner Schule passiert häufig folgender Fehler: Der Button wird zweimal angezeigt und funktioniert nicht mehr richtig. Auf meinem Mac Pro unter Sierra läuft die Anwendung dagegen fehlerfrei, auf den Schulrechnern manchmal auch. Interessant. Ich habe bisher noch nicht herausgefunden, was die Ursache für diesen Fehler ist. Ich vermute, die Graphikkarten in unseren Schulrechnern. Wenn man dort eine Java-Anwendung oder ein Java-Applet startet, wird manchmal (natürlich nicht reproduzierbar) ein Teil des Bildschirminhalts in das leere Fenster der Anwendung oder des Applets hineinkopiert.