Java Swing Tutorial: Robuste GUI-Anwendungen erstellen
Was ist Swing in Java?
Java Swing ist ein ausgefeiltes, plattformunabhängiges GUI-Toolkit, das das Abstract Window Toolkit (AWT) erweitert. Es bietet eine reiche Auswahl an Widgets – Buttons, Tabellen, Bäume und mehr – und ermöglicht Entwicklern, gepflegte Desktop-Anwendungen zu erstellen, ohne grundlegende Komponenten neu zu erfinden.
Als Teil der Java Foundation Classes (JFC) baut Swing auf AWTs Kernfunktionalität auf und bietet leichte, anpassbare Komponenten. Das Ergebnis ist ein Framework, das erweiterte UI-Features unterstützt, wie Look-and-Feel-Änderungen, benutzerdefiniertes Painting und Data Binding.
In diesem Tutorial meistern Sie:
- Was Swing ist und warum es wichtig ist
- Container-Klassen und ihre Rollen
- Grundlegende Konzepte der Java-GUI-Entwicklung
- Schritt-für-Schritt GUI-Erstellung mit praktischen Beispielen
- Gängige Layout-Manager und ihre Anwendungsfälle
- BorderLayout, FlowLayout und GridBagLayout im Detail
Java Swing Klassenhierarchie-Diagramm
Alle Swing-Komponenten erben von JComponent und können zu Container-Klassen hinzugefügt werden.
Was ist eine Container-Klasse?
Container-Klassen sind das Rückgrat jeder Swing-UI – sie halten und organisieren andere Komponenten. Mindestens ein Container ist für eine Swing-Anwendung erforderlich. Es gibt drei primäre Container-Typen:
- JPanel – Ein leichtgewichtiger, nicht-Fenster-Container zum Gruppieren von Komponenten.
- JFrame – Ein Top-Level-Fenster, das Titelleiste, Rahmen und Systemmenü enthält.
- JDialog – Ein modales oder modelloses Popup-Fenster für Benutzeraufforderungen.
Was ist GUI in Java?
Eine Graphical User Interface (GUI) in Java liefert eine intuitive visuelle Ebene für Benutzer, um mit Anwendungen zu interagieren. Durch das Zusammenstellen von Buttons, Labels, Textfeldern und anderen Widgets erstellen Entwickler ansprechende Erfahrungen, die die zugrundeliegende Logik abstrahieren.
GUI in Java erstellen (Schritt-für-Schritt)
Nachfolgend ein praktischer Walkthrough, der veranschaulicht, wie man ein Basis-Fenster erstellt und schrittweise Komponenten hinzufügt.
Schritt 1 – Neue Java-Datei erstellen
Kopieren Sie den folgenden Code in Ihren Editor:
import javax.swing.*;
class GuiDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("My First GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
JButton button = new JButton("Press");
frame.getContentPane().add(button);
frame.setVisible(true);
}
}
Schritt 2 – Kompilieren und Ausführen
Speichern Sie die Datei, kompilieren Sie mit javac GuiDemo.java, dann führen Sie mit java GuiDemo aus. Ein 300 × 300 Fenster mit einem einzelnen Button sollte erscheinen.
Schritt 3 – Weiteren Button hinzufügen
Ändern Sie den Code, um einen zweiten Button einzuschließen:
import javax.swing.*;
class GuiDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("My First GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
JButton button1 = new JButton("Button 1");
JButton button2 = new JButton("Button 2");
frame.getContentPane().add(button1);
frame.getContentPane().add(button2);
frame.setVisible(true);
}
}
Schritt 4 – Layout-Problem beobachten
Die Ausführung zeigt nun zwei überlappende Buttons, da der Standard-Layout-Manager für JFrame BorderLayout ist, der Komponenten in fünf distincte Bereiche platziert. Ohne Angabe eines Bereichs ersetzen nachfolgende Komponenten die vorherigen.
Java Layout-Manager
Layout-Manager steuern, wie Komponenten innerhalb von Containern angeordnet werden. Die Wahl des richtigen Managers ist entscheidend für responsive, wartbare GUIs. Die am häufigsten verwendeten Manager sind:
- BorderLayout
- FlowLayout
- GridBagLayout
- BoxLayout (hier nicht abgedeckt)
BorderLayout
BorderLayout teilt einen Container in fünf Bereiche auf: NORTH, SOUTH, EAST, WEST und CENTER. Er ist der Standard-Manager für JFrame.
FlowLayout
FlowLayout ordnet Komponenten sequenziell in einer Reihe an und bricht bei Bedarf in die nächste Zeile um. Er ist der Standard-Manager für JPanel.
GridBagLayout
GridBagLayout bietet die größte Flexibilität, da Komponenten mehrere Zeilen oder Spalten belegen und präzise innerhalb eines Gitters ausgerichtet werden können.
Beispiel: Einfaches Chat-Fenster erstellen
Nachfolgend ein vollständiges Programm, das demonstriert, wie Menüs, ein Textbereich und ein Steuerungs-Panel zu einer kohärenten Chat-Oberfläche kombiniert werden.
Versuchen Sie, es selbst zu programmieren, bevor Sie die Lösung ansehen.
// Eine vollständige Swing-Anwendung mit Menüs, Textbereich und Steuerelementen
import javax.swing.*;
import java.awt.*;
class GuiDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Chat Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
// Menüleiste
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("FILE");
JMenu helpMenu = new JMenu("Help");
menuBar.add(fileMenu);
menuBar.add(helpMenu);
JMenuItem openItem = new JMenuItem("Open");
JMenuItem saveItem = new JMenuItem("Save as");
fileMenu.add(openItem);
fileMenu.add(saveItem);
// Unteres Panel mit FlowLayout (Standard)
JPanel panel = new JPanel();
panel.add(new JLabel("Enter Text"));
panel.add(new JTextField(10));
panel.add(new JButton("Send"));
panel.add(new JButton("Reset"));
// Textbereich in der Mitte
JTextArea textArea = new JTextArea();
// Komponenten zum Frame hinzufügen mit BorderLayout
frame.getContentPane().add(BorderLayout.SOUTH, panel);
frame.getContentPane().add(BorderLayout.NORTH, menuBar);
frame.getContentPane().add(BorderLayout.CENTER, textArea);
frame.setVisible(true);
}
}
Java
- Java EE Applikationen auf Microsoft Azure deployen: Schritt-für-Schritt Guide
- String-Listen in VHDL erstellen: Best Practices & Beispiel
- Java Arrays Tutorial: Deklaration, Erstellung und Initialisierung – Beispielcode
- Array von Objekten in Java erstellen: Schritt-für-Schritt-Anleitung
- Zufallszahlen in Java generieren: Praktischer Leitfaden mit Random und Math.random
- Dateien in Java mit BufferedReader lesen – Praktischer Leitfaden mit Beispielen
- Char in String in Java konvertieren – Praxisbeispiele und Best Practices
- String in Java mit Rekursion umkehren – Schritt-für-Schritt-Anleitung
- Java 10: Application Class-Data Sharing (AppCDS, JEP 310) – Schnellerer App-Start
- PLCnext Konsolenanwendung mit C# entwickeln: Einsteigerleitfaden