Java: GUI für Anfänger

Dieses "Tutorial" befasst sich damit eine GUI in Java zu erstellen. Da ich als ich damit anfing sehr viele Probleme damit hatte, versuche ich es nun verständlich zu beschreiben. Somit ist es wirklich für Anfänger gedacht.

Vorab, es gibt zwei Arten von Fenster in Java (wie in anderen Sprachen nun mal auch):
  • JFrame = Ein ganz normales Fenster z.B. ein Text-Editor
  • JDialog = Ein Dialog z.B. zum Auswählen von Dateien oder eine Message-Box
Wir werden hier beide Arten von Fenstern verwenden.
Fangen wir nun mal an ein simples Fenster zu erstellen.
Ich möchte noch erwähnen, dass ich IntelliJ benutze um Java Applikationen zu erstellen. Zur Installation werde ich bei genügen Zeit auch ein Video/Tutorial erstellen. Lasst und zunächst eine Klasse erstellen. Ich nenne diese Beispielhaft GUITutorial
public class GUITutorial
{

}
Dies ist quasi das Grundgerüst unserer Klasse wenn wir für den Terminal/Konsole programmieren. Lasst uns noch die Java Klasse erweitern hierzu müssen wir von JFrame erben, also wir müssen von einem Fenster erben um ein Fenster zu sein. Das sieht dann wie folgt aus:
public class GUITutorial extends JFrame
{

}
Wie man sieht nutzen wir hierfür das "Zauberwort" - extends, was etwas wie erweitern bedeutet.
Als nächstes werden wir den Konstruktor für die Klasse erstellen. Dieser wird die Initialisierung der Oberfläche beinhalten.
public class GUITutorial extends JFrame
{
 public GUITutorial(){
     setDefaultCloseOperation(EXIT_ON_CLOSE); // damit es bei klick auf den Schließen-Button geschlossen wird
     setTitle("Java GUI für Anfänger");       // Hier setzten wir den Titel
     setSize(new Dimension(800,600));         // Die Fenstergröße auf 800x600 setzen
     setLocationRelativeTo(null);             // Fenster mittig auf den Bildschirm verschieben
     setVisible(true);                        // ZEIG UNS DAS FENSTER :)
  }
}

Als nächstes wäre es doch sinnvoll zu wissen, wie man einen Button usw. auf das Fenster "kleben" können.
Die Fläche auf die wir Benutzerelemente hinzufügen können nennt sich, ContentPane (frei übersetzt: InhaltsScheibe).
Lasst uns nun ein Button auf die Fläche hinzufügen. Ich möchte hier erwähnen, dass es leichter ist den Button als Klassenvariable zu deklarieren. Bald werdet ihr merken warum :)
public class GUITutorial extends JFrame
{
 private JButton clickMe;

 public GUITutorial(){
     setDefaultCloseOperation(EXIT_ON_CLOSE); // damit es bei klick auf den Schließen-Button geschlossen wird
     setTitle("Java GUI für Anfänger");       // Hier setzten wir den Titel
     setSize(new Dimension(800,600));         // Die Fenstergröße auf 800x600 setzen
     setLocationRelativeTo(null);             // Fenster mittig auf den Bildschirm verschieben
     setVisible(true);                        // ZEIG UNS DAS FENSTER :)
     
     clickMe = new JButton("Klick mich!");    // Ein Klick mich Button wurde initialisiert
     getContentPane.add(clickMe);             // Und wir fügen den Button zum Fenster hinzu
  }
}
Nun fehlt noch eine main-Methode und die nötigen Imports um den Code auszuführen. Hier den gesamten Quellcode ohne Kommentare:
import javax.swing.*;
import java.awt.*;

/**
 * Author: Dominik
 */
public class GUITutorial extends JFrame {
    private JButton clickMe;

    public GUITutorial(){
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setTitle("Java GUI für Anfänger");
        setSize(new Dimension(800,600));
        setLocationRelativeTo(null);
        setVisible(true);

        clickMe = new JButton("Klick mich!");
        getContentPane().add(clickMe);
    }

    public static void main(String[] args) {
        new GUITutorial();
    }
}
Das ganze sieht dann wie folgt aus:


Als nächstes werden wir uns ansehen, wie wir auf das Klicken des Buttons reagieren können und wie man mehrere Objekte auf die Oberfläche legen kann. Tipp: Dann wird auch die Klassenvariable wichtig werden.
Als Übung: Füge ein Label auf das ContentPane. Gedanken dazu wie man mehrere "Widgets" auf die Oberfläche bekommt.

Kommentare

Beliebte Posts aus diesem Blog

[ENGLISH] Capture the Flag at UCF - Write Up - Crypto - XORLY

Dr. Evil's Bombe (Binary Bomb Lab) | Teil 1