Javaschubla.de - Java als erste Programmiersprache

Ein einfaches GUI-Programm mit Swing

GUI steht für Graphical User Interface. GUI-Programme haben Fenster, Buttons etc., im Gegensatz zu Programmen, die nur etwas auf der Konsole ausgeben.

Dieses Programm öffnet ein Fenster mit einem Textfeld, einem Button und einem Label. In das Textfeld gibt man eine Zahl ein (Punkt statt Komma benutzen). Wenn man den Button drückt, wird das Quadrat der Zahl aus dem Textfeld berechnet und auf das Label geschrieben. Außerdem kann man das Programm wie es sich gehört durch Klick auf das X beenden.

Es geht nicht darum, das Programm zu verstehen. Man soll nur sehen, dass man mit Java nicht nur Konsolenprogramme, sondern auch hübsche grafische Programme erstellen kann.

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

public class Fenster extends JFrame
{
  public static void main(String[] args)
  {
    new Fenster();
  }

  public Fenster()
  {
    super("Der Quadrator");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    getContentPane().setLayout(new FlowLayout());

    JTextField textField = new JTextField("Zahl eingeben");
    getContentPane().add(textField);

    JButton button = new JButton("Quadrieren");
    getContentPane().add(button);

    JLabel label = new JLabel("Ergebnis");
    getContentPane().add(label);

    button.addActionListener(new MyListener(textField, label));

    setLocation(250, 190);
    setSize(300, 90);
    setVisible(true);
  }
}

class MyListener implements ActionListener
{
  private JTextField textField;
  private JLabel label;

  public MyListener(JTextField tf, JLabel l)
  {
    textField = tf;
    label = l;
  }

  public void actionPerformed(ActionEvent ae)
  {
    String text = textField.getText();

    String ergebnisText = "";
    try
    {
      double zahl = Double.parseDouble(text);
      double quadrat = zahl * zahl;
      ergebnisText = "" + quadrat;
    }
    catch(NumberFormatException ex)
    {
      ergebnisText = "keine Zahl";
    }

    label.setText(ergebnisText);
    textField.setText("Zahl eingeben");
  }
}

Speichere den Quelltext (beide Klassen zusammen) unter dem Namen Fenster.java. Kompiliere wie üblich mit javac Fenster.java. Es werden zwei Bytecode-Dateien erzeugt: Fenster.class und MyListener.class. Führe das Programm mit java Fenster aus.

Anmerkung: Das Programm ist so geschrieben, dass es auch mit JDK 1.4 läuft. Bei JDK 5.0 hat man es etwas einfacher, man kann immer getContentPane() weglassen.

Die beiden *.class-Dateien könnte man übrigens in eine *.jar-Datei packen und ein sogenanntes Manifest hinzufügen, diese Jar-Datei könnte man dann durch Doppelklick direkt starten ohne ein DOS-Fenster oder eine Konsole zu benötigen.


Im nächsten Kapitel werden Applets vorgestellt.