Eine Minimal-Anwendung
Java-Applets sind heute sowas von "out"; die meisten Schulbücher haben das aber leider noch nicht mitbekommen. Die neueren BlueJ-Versionen unterstützen daher keine Applets mehr, sondern nur noch Java-Anwendungen. Im Prinzip sind diese aber ähnlich aufgebaut wie ein Applet. Wer also gelernt hat, ein kleines Java-Applet zu schreiben, muss hier nicht besonders umdenken, nur ein bisschen. Schauen wir uns zunächst eine minimale Java-Anwendung an, wie sie sich auch auf der ersten Seite der Folge 5 findet:
import java.awt.*; import javax.swing.*; public class Anmwendung1 extends JFrame { public Anmwendung1() { 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 Anmwendung1(); } }
Der Konstruktor
- Mit dem Befehl setSize wird die Größe der Java-Anwendung auf 500 x 500 Pixel festgelegt.
- 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. Da wir hier false als Parameter gewählt haben, kann der User die Fenstergröße nicht mit der Maus verändern.
- Und mit setVisible schließlich legen wir fest, ob das Fenster von Anfang an zu sehen ist oder nicht.
Die paint()-Methode
In der paint-Methode werden graphische Inhalte in das leere Fenster "gezaubert". Der drawString-Befehl beispielsweise schreibt einen Text in das Fenster. Die drei Parameter (String, int, int) des drawString-Befehls sind dabei sehr wichtig, man sollte sie auswendig kennen:
- Der erste Parameter - ein String - stellt den Text dar, der ausgegeben werden soll. In unserem Fall also "Hallo Welt".
- Der zweite Parameter - eine int-Zahl - legt fest, an welcher X-Position im Fenster der Text ausgegeben wird.
- Der dritte Parameter - wieder eine int-Zahl - gibt schließlich an, an welcher Y-Position der Text erscheint. Dabei wird von oben nach unten gerechnet. Das heißt, die Y-Position 0 ist ganz oben im Fenster, die Y-Position 500 ganz unten (falls das Fenster nur 500 Pixel hoch ist).
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.
Eine etwas komplexere Anwendung
Betrachten wir nun eine etwas komplexere Anwendung mit Buttons, Textfeldern und Ereignisbehandlung:
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 actionPerformed(ActionEvent event) { if (event.getSource() == ok) { ausgabe.setText(eingabe.getText()); } } public static void main(String[] args) { new Anwendung2(); } }
Die Anwendung besitzt zwei Textfelder, eines für die Eingabe eines Strings und eines für die Ausgabe eines Strings. Außerdem hat die Anwendung einen Button. Wenn dieser Button geklickt wird, dann wird der Text aus dem Eingabefeld ausgelesen und in das Ausgabefeld kopiert. Ein wirklich leistungsfähiges Programm also, mit dem man im Prinzip Doktorarbeiten schreiben könnte.
Spaß beiseite. Dieses kleine Programm ist lediglich ein Grundgerüst, in das Sie dann die gewünschten Funktionen einhängen können. Das Programm soll zeigen, wie man Buttons deklariert, positioniert, mit einem ActionListener verknüpft und dann in der actionPerformed-Methode erkennt. Hier hat sich gegenüber den alten Java-Applets überhaupt nichts geändert. Außerdem zeigt das Programm, wie man mit Textfeldern umgeht. Die beiden wichtigsten Methoden sind sicherlich das Lesen aus einem Textfeld und das Schreiben in ein Textfeld. Dass man Textfeldern außerdem andere Farben und Fonts geben kann, wird in dem kleinen Programm noch als Zugabe gezeigt.
Außerdem sieht man bei diesem Programm, dass eine paint-Methode nicht immer notwendig ist. Sie wird nur gebraucht, wenn tatsächlich etwas gezeichnet werden soll. Solange die Anwendung nur ein paar Buttons, Textfelder und andere Elemente zur Verfügung stellt, wird keine paint()-Methode benötigt.