So kannst du mit dem JFrame ein grafisches Fenster in Java erzeugen
Heute wollen wir Java Fenster erzeugen. Und zwar mit Swing.
Java Swing – was ist das?
Zum Erstellen von grafischen Benutzeroberflächen, kurz GUI, bietet Java eine eigene Standardklasse an.
Diese Klasse nennt sich Swing.
Aus dieser Swing-Klasse heraus können Objekte erstellt werden.
Diese Objekte lassen sich in vier verschiedene Kategorien einteilen.
- Fenster und Dialoge bilden das Grundgerüst einer grafischen Oberfläche.
- Die zweite Kategorie sind die Menüs.
Diese dienen der Steuerung eines Programmes.
Mit Hilfe von Menüs kann durch das Programm navigiert und es können weitere Fenster geöffnet werden. - Auf den einzelnen Fenster werden Container platziert.
Und diese wiederum enthalten Bedienelemente wie Buttons, Eingabefelder und Schaltflächen.
Also dann – lass uns beginnen das Grundgerüst einer GUI zu erstellen.
Inhalt
- 1 So kannst du ein Java Fenster erzeugen
- 2 Das Fenster benötigt jetzt noch eine individuelle Breite und Höhe.
- 3 Das Fenster ist noch nicht sichtbar.
- 4 Jedem Dialogfenster kannst du einen Titel oder Namen zuweisen.
- 5 Was soll passieren, wenn das Fenster geschlossen wird
- 6 So lassen sich die Dialogfenster anordnen
- 7 Zuammenfassung:
So kannst du ein Java Fenster erzeugen
Und zwar legst du ein Objekt der Klasse JFrame an.
Und so geht’s.
import javax.swing.JFrame;//Importanweisung der Klasse JFrame aus dem package Swing
public class SwingFenster {
public static void main(String[] args) {
JFrame fenster = new JFrame(); //neues Frame bzw. Fenster
}
}
Um ein Dialogfenster vom Typ JFrame anzulegen, musst du die Klasse importieren.
Diese Klasse befindet sich in einem Package namens Swing.
Im diesem Swing-Package befinden sich weitere Elemente für die grafische Benutzeroberfläche.
Wenn du jetzt auf „Run“ klickst, passiert äußerlich im Programm erst einmal noch gar nichts.
Du solltest für dieses Dialogfenster eine bestimmte Fläche reservieren.
Und eine Fläche besteht immer aus einer Breite und einer Höhe.
Also weisen wir auch diese zu.
Das Fenster benötigt jetzt noch eine individuelle Breite und Höhe.
Die Zuweisung erfolgt mit einer Methode, namens setSize().
Und dieser Methode übergibst du dann zwei Zahlen.
Zuerst die Breite und dann die Höhe.
Da es sich hierbei um eine Instanzmethode handelt, rufst du diese an der Referenzvariable auf.
import javax.swing.JFrame;//Importanweisung
public class SwingFenster {
public static void main(String[] args) {
JFrame fenster = new JFrame(); //neues Frame bzw. Fenster
fenster.setSize(600, 400);//Aufruf der Methode an der Referenzvariablen und Setzen der Breite 600 und Höhe 400
}
}
So eine Höhe und Breite haben wir zugewiesen.
Klicke nochmals auf „RUN“ und schau was passiert.
Auch jetzt rührt sich noch nichts.
Eine Variable muss noch geändert werden.
Und zwar die Variable für die Sichtbarkeit.
Das Fenster ist noch nicht sichtbar.
Zum Sichtbarmachen nutze die Methode setVisible().
Als Parameter kannst du der Methode entweder den Wert true für sichtbar oder false für unsichtbar übergeben.
import javax.swing.JFrame;//Importanweisung
public class SwingFenster {
public static void main(String[] args) {
JFrame fenster = new JFrame(); //neues Frame bzw. Fenster
fenster.setSize(600, 400);//Setzen der Breite 600 und Höhe 400
fenster.setVisible(true);//Fenster ist sichtbar, da true
}
}
Klicke nochmals auf „RUN“ und jetzt erscheint das Fenster.
Lass uns jetzt dieses Grundgerüst etwas individueller gestalten.
Jedem Dialogfenster kannst du einen Titel oder Namen zuweisen.
Und so geht’s.
import javax.swing.JFrame;//Importanweisung
public class SwingFenster {
public static void main(String[] args) {
JFrame fenster = new JFrame("Neues Fenster"); //neues Frame bzw. Fenster
fenster.setSize(600, 400);//Setzen der Breite 600 und Höhe 400
fenster.setVisible(true);//Fenster ist sichtbar
}
}
Du kannst dem Objekt direkt beim Konstruktoraufruf einen String übergeben.
Der zugewiesene String-Wert erscheint dann am oberen Rand des Dialogfensters als Name oder Titel.
Um den Titel nachträglich zu vergeben oder zu ändern, bietet dir Java die Instanzmethode setTitle() an.
import javax.swing.JFrame;//Importanweisung
public class SwingFenster {
public static void main(String[] args) {
JFrame fenster = new JFrame("Neues Fenster"); //neues Frame bzw. Fenster
fenster.setSize(600, 400);//Setzen der Breite 600 und Höhe 400
fenster.setVisible(true);//Sichtbarkeit des Fensters
fenster.setTitle("Hallo Matze");//Änderung des Titels
}
}
In der Parameterliste der Methode übergibst du den String und dieser Titel erscheint dann ebenfalls am oberen Rand.
Was soll passieren, wenn das Fenster geschlossen wird
Da gibt es zwei Möglichkeiten.
Und zwar wird einfach nur das Fenster geschlossen oder das Programm wird komplett beendet.
In unserem Fall wird lediglich das Fenster geschlossen.
Um dies zu demonstrieren,
- lege ich ein zweites Fenster an
- Starte das Programm
- Und schließe ein Fenster durch einen Klick auf das X oben in der Ecke.
import javax.swing.JFrame;//Importanweisung
public class SwingFenster {
public static void main(String[] args) {
JFrame fenster = new JFrame("Neues Fenster"); //neues Frame bzw. Fenster
fenster.setSize(600, 400);//Setzen der Breite 600 und Höhe 400
fenster.setVisible(true);//Sichtbarkeit des Fensters
fenster.setTitle("Hallo Matze");//Änderung des Titels
JFrame fensterZwei = new JFrame("Zweites Fenster"); //zweites Frame bzw. Fenster
fensterZwei.setSize(500, 300);//Setzen der Breite 500 und Höhe 300
fensterZwei.setVisible(true);//Sichtbarkeit des Fensters
}
}
Wenn du es selbst ausprobierst, wirst du feststellen, dass sich lediglich das Fenster schließt.
Manchmal ist es aber schon sinnvoll, dass sich alle Fenster auf einmal schließen und das Programm komplett beendet wird.
Um dies zu erreichen musst du dem entsprechenden Fenster eine Anweisung mitgeben.
Die Instanzmethode dazu nennt sich setDefaultCloseOperation().
In der Parameterliste übergibst du die Konstante JFrame.EXIT_ON_CLOSE.
import javax.swing.JFrame;//Importanweisung
public class SwingFenster {
public static void main(String[] args) {
JFrame fenster = new JFrame("Neues Fenster"); //neues Frame bzw. Fenster
fenster.setSize(600, 400);//Setzen der Breite 600 und Höhe 400
fenster.setVisible(true);//Sichtbarkeit des Fensters
fenster.setTitle("Hallo Matze");//Änderung des Titels
JFrame fensterZwei = new JFrame("Zweites Fenster"); //zweites Frame bzw. Fenster
fensterZwei.setSize(600, 400);//Setzen der Breite 600 und Höhe 400
fensterZwei.setVisible(true);//Sichtbarkeit des Fensters
fensterZwei.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//Programm wird geschlossen
}
}
Wenn du jetzt das Fenster „Hallo Matze“ schließt, schließt sich lediglich dieses Fenster.
Falls du allerdings das Fenster „Zweites Fenster“ schließt, schließen sich alle Fenster – und somit das komplette Programm.
So lassen sich die Dialogfenster anordnen
Da wir bisher schon zwei Fenster haben, sollte man festlegen können – welches im Vordergrund und welches im Hintergrund platziert wird.
Und diese Anordnung vollziehst du mit den Methoden toFront() und toBack().
import javax.swing.JFrame;
public class SwingFenster {
public static void main(String[] args) {
JFrame fenster = new JFrame("Neues Fenster");
fenster.setSize(600, 400);
fenster.setVisible(true);
fenster.setTitle("Hallo Matze");
fenster.toFront();//Vorderes Fenster
JFrame fensterZwei = new JFrame("Zweites Fenster");
fensterZwei.setSize(600, 400);
fensterZwei.setVisible(true);
fensterZwei.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fensterZwei.toBack();//Fenster ist im Hintergrund
}
}
Zuammenfassung:
- Dialogfenster bilden in Java das Gründgerüst für eine grafische Benutzeroberfläche GUI.
- Um nun so ein Java Fenster erzeugen zu können, musst du ein Objekt der Klasse JFRame anlegen.
- Du kannst diesem JFrame-Objekt beim Konstruktoraufruf einen Titel als String übergeben.
Oder du kannst diesen Titel nachträglich anlegen oder ändern. - Außerdem kannst du festlegen, ob beim Schließen des Fensters das komplette Programm geschlossen werden soll oder nur das einzelne Fenster.