Java Reference
In-Depth Information
Sie sehen, dass die Entwicklungsumgebung allein durch die Auswahl eines Frames als
zu erstellende Klasse einen recht umfangreichen Quellcode erstellt. Es bedarf deshalb
zunächst einer Erläuterung der einzelnen Programmteile, die für Programme mit grafi-
scher Benutzeroberfläche typisch sind.
Die
main
-Methode startet mit
SwingUtilities.invokeLater(new
Runnable()
einen neuen
lauffähigen
Thread
, ohne die normale Sequenz der Ereignisbehandlung zu stören. Als
Thread wird in einem Multitasking-fähigen Betriebssystem ein eigenständiger Prozess
bezeichnet. Jedes Programm, das unter einem solchen Betriebssystem gestartet wird, ist
zunächst ein Thread. Sie werden später sehen, dass auch ein einziges Programm meh-
rere Threads starten kann, die dann quasi parallel abgearbeitet werden.
9
Die
run()
-Methode des Runnable-Objekts wird nur ausgeführt, wenn sie das Ende der
Ereigniswarteschlange erreicht. Immer wenn eine Swing-Komponente außerhalb einer
Listener-Methode verändert werden soll, muss
invokeLater
verwendet werden. Das
mag im Augenblick vielleicht etwas verwirrend klingen, aber Sie brauchen sich darüber
keine Gedanken zu machen, denn die Methode wird richtigerweise hier von Jigloo ein-
gesetzt und muss von Ihnen auch nicht verändert werden.
In der
run()
-Methode wird mit
JFrame1
inst
=
new
JFrame1();
eine Instanz des Objekts
JFrame1
erzeugt. Mit
inst.setLocationRelativeTo(null);
wird der Frame auf dem Bild-
schirm zentriert, und
inst.setVisible(true);
setzt die Eigenschaft
visible
auf
true
und stellt sicher, dass der Frame auch dargestellt wird.
Der Konstruktor aus
Listing 9.2
ruft zuerst den Konstruktor der Vorfahrenklasse auf
und initialisiert anschließend, wie der Name schon zum Ausdruck bringt, die grafische
Benutzeroberfläche.
public JFrame1() {
super();
initGUI();
}
Listing 9.2
Konstruktor von JFrame1
In dieser Schablonenmethode wird der Frame auf die spätere Darstellung vorbereitet:
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
pack();
setSize(400, 300);
} catch (Exception e) {