20 Eine GUI für die Klasse Mathematik 20.1 BorderLayout |
|
GUI | GUI (=
Grafical User Interface) ist ein Klasse oder Programm, das die grafische
Oberfläche für andere Programme (oft Fachklassen genannt) bietet. Diese
grafisch gestalteten Oberflächen kann man als Schnittstelle zwischen
Bediener und den Fachklassen verstehen. Was heißt das konkret? Wir haben
im Kapitel 12 und
13 die Klasse
Mathematik aufgebaut (Wenn Sie sich nicht mehr gut erinnern können,
empfiehlt es sich die wesentliche Teile dieser Kapitel noch einmal zu
wiederholen) . Um die einzelnen Methoden zu testen, hatten wir kleine
Testprogramme geschrieben. Damit wollen wir uns jetzt nicht mehr zufrieden
geben. Wir
wollen lieber ein Programm haben, dessen Erscheinungsbild das Bild links
z.B. hat. Das Programm besitzt ein Eingabefeld um eine Zahl einzutragen,
einen Schalter (Button) um die Berechnung der Fakultät der Zahl im
Eingabefeld zu veranlassen und ein Ausgabefeld um das Ergebnis
darzustellen. So beschrieben liegt das Programm, zwischen dem Bediener des
Rechners und der Klasse Mathematik, die den eigentlichen Job, des
Berechnens erledigt. Bevor wir uns an das Programmieren dieser GUI
heranmachen, müssen wir uns noch etwas mit dem Layout beschäftigen. In Kap
19.2 haben wir das Flowlayout benutzt, das die grafischen Objekte
nacheinander, also in der Reihenfolge, wie sie angelegt werden in den
Objektbehälter ablegen. Wir benutzen jetzt ein Borderlayout, das uns mehr
Gestaltungsmöglichkeiten bietet. Zur Programmierung benutzen wir wieder
unsere Vorlage, die uns der Java-Editor anbietet. |
Gerüst |
public class Geruest extends JFrame {
// Anfang Variablen
// Ende Variablen
public Geruest (String title) {
// Frame-Initialisierung
super (title);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300, 300);
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
// Anfang Komponenten
// Ende Komponenten
setVisible(true);
}
// Anfang Ereignisprozeduren
// Ende Ereignisprozeduren
public static void main (String[] args) {
new Geruest("Geruest");
}
}
|
Wir
sehen, standardmäßig wir hier das komfortable Borderlayout vorgegeben. Das
geschieht so, dass dem Objektbehälter
cp
mit der Methode setLayout(...)
ein definiertes Layout übergeben wird. In unserem Fall wird mit
new BorderLayout()
ein nicht benanntes
BorderLayout-Objekt
erzeugt und übergeben.
Was
sind nun die Eigenschaften dieses Boderlayouts? Ein Bild hilft hier
weiter. Es zeigt, in welche Bereiche der Behälter aufgeteilt wird, und wie
die Bereiche genant werden. Wir können uns leicht vorstellen, dass das
Eingabefeld der Fakultäts-GUI in den Norden, das Ausgabefeld in den Süden
und das Button in das Zentrum. Die Bereiche Osten und Westen sind nicht
belegt, weshalb sie zu 'nichts' zusammenschrumpfen und nicht sichtbar
sind.
|
|
Erzeugender Objekte und ihr Plazieren im Behälter |
Zunächst deklarieren wir Aus- und Eingabefeld, sowie den Schaltknopf private JTextField eingabeFeld, ausgabeFeld; private JButton rechenButton; Initialisiert, wir sagen jetzt lieber instanziiert, werden sie im Konstruktor unserer GUI, dort wo die Vorlage für Komponenten Platz gehalten hat: // Anfang Komponenten eingabeFeld = new JTextField("Eingabe einer Zahl"); eingabeFeld.setHorizontalAlignment(eingabeFeld.RIGHT); cp.add(eingabeFeld,BorderLayout.NORTH); rechenButton = new JButton("Fakultät[n]"); cp.add(rechenButton,BorderLayout.CENTER); ausgabeFeld = new JTextField(); ausgabeFeld.setHorizontalAlignment(ausgabeFeld.RIGHT); cp.add(ausgabeFeld,BorderLayout.SOUTH); ausgabeFeld.setEditable(false); // Ende Komponenten 1. Grafik-Objekt:
eingabeFeld 2. Grafikobjekt:
rechenButton 3. Grafikobjekt:
ausgabeFeld Mit setSize(200,100)
wird die Breit auf 200 und die Höhe auf 100 Pixel gesetzt. Übrigens, dass
diese Methode ohne Punktnotation aufgerufen wird, ist
leicht zu
verstehen. Die Methode setSize(...)
ist nämlich in der Klasse
Component implementiert. Da
unsere Klasse von JFrame
erbt, JFrame
aber über mehrere Stationen von
Component erbt, wird die
Methode setSize(...)
so benutzt, als wäre sie in unserer Klasse implementiert. |
zu | 20.2 Eingabe- und Ausgabefelder: Fakultätsrechner |
zur Startseite | www.pohlig.de (C) MPohlig 2004 |