19 Eine
GUI-Klasse für die Fachklasse Mathematik 19.1 Ein- und Ausgabefenster |
|
GUI | GUI (=
Grafical User Interface) ist ein Klasse oder Programm, das die grafische
Oberfläche für andere Programme (of Fachklassen genannt) bietet.
![]() |
Gerüst |
import java.awt.*; import java.awt.event.*; import javax.swing.*; #1 public class EinUndAusgabe extends JFrame { #2 // Anfang Variablen #3 // Ende Variablen #4 public EinUndAusgabe (String title) { // Frame-Initialisierung #5 super (title); #6 addWindowListener(new WindowAdapter() { #7 public void windowClosing (WindowEvent evt) { #8 System.exit(0); #9 } #10 }); #11 setSize(300, 300); #12 Container cp = getContentPane(); #13 cp.setLayout(new BorderLayout()); // Anfang Komponenten // Ende Komponenten #14 setVisible(true); #15 } // Anfang Ereignisprozeduren // Ende Ereignisprozeduren #16 public static void main (String[] args) { #17 new EinUndAusgabe("Ein- und Ausgabe"); #18 } #19 }
|
Erläuterungen |
Die GUI wurde als JFrame aus dem Paket javax.swing angelegt. Mit import javax.swing.*; werden alle Klassen aus dem Paket javax.swing zur Verfügung gestelt. Da aber JFrame Eigenschaften von Frame aus dem Paket java.awt enthält - wir sagen später 'erbt' - muss über import java.awt.*; dieses Pakte zur Verfügung gestellt werden. Auf den dritten Import werden wir später zurückkommen. Wir werden unsere GUI also als Swing-Klasse programmieren. Einige Bemerkungen zum restlichen Gerüst wollen wir aber schon jetzt machen, auch wenn wichtige Details erst deutlich werden, wenn wir uns intensiver mit OOP beschäftigen: In den Zeilen #4 bis #15 wird der sog. Konstruktor angelegt, der in Zeile #17, also in der main-Methode aufgerufen wird. Im Konstruktor ist all das festgelegt, was die sog. Instanz unseres Programms nach ihrer Erzeugung alles hat und können soll. So bekommt der Fensterrahmen in der Zeile #5 einen Namen, der dem Konstruktor bei seinem Aufruf in Zeile #17 übergeben wird. Das Fenster wird also den Titel "Ein- und Ausgabe" haben. In den Zeilen #6 bis #10 wird das ordentliche Schließen des Fensters organisiert, das dann geschehen soll, wenn der Bediener das Kreuzbutton in der rechten oberen Ecke des Fensters anklickt. In #11 bekommt das Fenster eine quadratische Form mit der Seitenlänge von 300 Pixel. Schließ wird in den Zeilen #12 und #13 ein Container angelegt, der die grafischen Komponenten - sie müssen erst noch angelegt werden - aufnimmt. Dieser Container bekommt mit der Methode getContentPane() Informationen über das grafische Umfeld des Rechners und der Bildschirmeinstellung. Dieser Container, cp genannt, wird noch mit einem Layout, dem Borderlayout versehen. |
BorderLayout |
Dieses BorderLayout teilt den Container in 5 Regionen: Norden, Westen, Süden, Osten und Zentrum. Wie diese Regionen angeordnet sind, zeigt das nachstehende Bild.
In die aufzeigten Regionen lassen sich Buttons, Textfelder und vieles mehr einfügen. Ja man kann den einzelnen Regionen weitere Layouts zufügen und sie in ihrer Größe verändern, so dass der Flexibilität kaum Grenzen gesetzt sind. In unserem Programm wollen wir im Norden und Süden jeweils ein Textfeld und im Zentrum ein Button unterbringen. Da die Regionen Westen und Osten nicht besetzt sind, verschwinden sie.
|
Zufügen von Grafikobjekten |
Wir deklarieren also zwischen den Zeilen #2 und #3:
Initialisiert, wir sagen jetzt lieber instanziiert, werden sie im Konstruktor, dort wo für Komponenten Platz gehalten ist:
1. Grafik-Objekt:
eingabeFeld
2. Grafikobjekt:
rechenButton
3. Grafikobjekt:
ausgabeFeld Wir verändern noch die Zeile #11. Statt der vorgegebenen Größe für das das Grafikfenster, setzen wir es mit setSize(200,100) auf die Breit von 200 und die Höhe auf 100 Pixel.
Eine Bemerkung zum Schluss. Viele
Methode werden in diesem Programm ohne Punktnotation aufgerufen. Der Grund
dafür ist, dass es Methoden der Klasse
EinUndAusgabe
selbst sind. Man fragt sich, wie das geht, wo sie doch von uns nicht
implementiert sind? Die Antwort ist recht einfach, es sind Methoden, die
in JFrame
implementiert sind und wegen
EinUndAusgabe extends JFrame
in EinUndAusgabe
selbst zur Verfügung stehen als wären sie hier implementiert. |
Die
Ausgabe Download: |
![]() |
19.2 Aktionsabhorcher und Ereignisse | |
zur Startseite | www.pohlig.de (C) MPohlig 2003 |