Java: Swing

Aus Flinkwiki
Wechseln zu: Navigation, Suche
Seitenübersicht
Zur Seite "Java"
Zur Seite "Java: Swing"
Zur Seite "IntelliJ IDEA"
Zur Seite "Eclipse"
Zur Seite "Netbeans"
Zur Seite "Java: Beispiele"
Zur Seite "Kotlin"


Allgemeines

Swing ist ein GUI-Toolkit für die Programmiersprache Java von Sun Microsystems. Seit Java-Version 1.2 (1998) ist es Bestandteil der Java-Runtime. Swing gehört zu den Java Foundation Classes (JFC), die eine Sammlung von Bibliotheken zur Programmierung von grafischen Benutzerschnittstellen bereitstellen. Zu diesen Bibliotheken gehören Java 2D, die Java Accessibility API (JAAPI), das Drag-and-Drop-API und das Abstract Window Toolkit (AWT). Swing baut auf dem älteren AWT auf und ist mit den anderen APIs verwoben.[1]


Grundgerüst

Beispiel: Fenster mit Label, Textfeld und Button

package gbo;

import javax.swing.*;

/**
 *
 * @author itse
 */

// Elternklasse JFrame
public class GBO extends JFrame {

    // Initialisierung des Containers
    JPanel pan = new JPanel();

    // Initialisierung der Widgets
    JLabel lab = new JLabel("Name: ");
    JTextField tf = new JTextField("", 20);
    JButton but = new JButton("Ok");

    // Konstruktor
    public GBO() {
        super("Fenster");
        pan.add(lab);
        pan.add(tf);
        pan.add(but);

        this.setContentPane(pan);
        this.pack();
        this.setVisible(true);

        // Klick auf 'x' beendet Fenster und Programmausführung
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        // Instanziierung des Fensters
        new GBO();
    }

}


Netbeans GUI Builder

Der GUI Builder der Entwicklungsumgebung Netbeans ist ein Tool, mit dem sich eine Anwendung grafisch entwickeln lässt. Dazu muss das JFrame-Formular in das Java-Projekt eingebunden werden:

> New > (Swing GUI Forms >) JFrame Form


Netbeans_GUI_Builder


Tipps und Tricks

Frame zentrieren

import java.awt.*;

/**
 * Utility-Klasse für grafische Oberflächen.
 * 
 * @author fmk
 */
public class SwingTools {

    private SwingTools() {
    }

    /**
     * Zentriert den referenzierten Frame auf dem Bildschirm.
     * 
     * @param frame 
     */
    public static void centerFrame(Window frame) {
        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (int) ((dimension.getWidth() - frame.getWidth()) / 2);
        int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
        frame.setLocation(x, y);
    }

    public static Point getCenterOnScreen(int screen, Dimension dimension) {
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice[] gs = ge.getScreenDevices();
        GraphicsDevice gd = gs[screen];
        GraphicsConfiguration[] gc = gd.getConfigurations();
        Rectangle screenBounds = gc[0].getBounds();

        Point pos = new Point();
        pos.x = screenBounds.x + (screenBounds.width / 2) - (dimension.width / 2);
        pos.y = screenBounds.y + (screenBounds.height / 2) - (dimension.height / 2);

        return pos;
    }

    public static void centerOnScreen(int screen, Window window) {
        window.setLocation(SwingTools.getCenterOnScreen(screen, window.getSize()));
    }
}


[Dank an fmk, javafish.de]

In den Konstruktor der Hauptklasse fügt man folgende Zeile ein:

SwingTools.centerOnScreen(0, this);

Quellen



| |