~Java4Beginners~
~Java4Beginners~

JDialog

Die Klasse JDialog verwenden wir, um temporäre Dialogfenster zu erstellen. Zwei Besonderheiten seien hier zu Anfang schon erwähnt. Die setDefaultCloseOperation-Option EXIT_ON_CLOSE kann hier nicht verwendet werden. Des weiteren haben wir die Möglichkeit den JDialog modal zu setzen. Diese bedeutet, dass wir festlegen können, ob das aufrufende Fenster aktiv werden kann, so lange das Dialogfenster geöffnet ist.
Im Normalfall wird dem Dialogfenster ein Owner zugewiesen. Dies kann entweder ein Frame oder ein Dialog sein. Die häufigere Variante dürfte allerdings sein, dass vom Frame das Dialogfenster aufgerufen wird und nicht von einem anderen Dialogfenster. Dies ist dahingehend wichtig, da es von der Angabe des Owners abhängig ist, welche Fenster beim Aufruf des modal-gesetzten Dialogfensters gesperrt werden.

Konstruktoren

Konstruktormethode Erklärung
JDialog() Erzeugt ein JDialog-Objekt ohne Titel. Dieser JDialog ist nicht-modal.
JDialog(owner) Erzeugt einen nicht-modalen JDialog ohne Titel, allerdings mit einem Besitzer
JDialog(owner, modal) Erzeugt einen JDialog ohne Titel mit Besitzer. Wenn für modal true eingegeben wurde, dann wird bei geöffneten JDialog-Fenster das Aktivieren vom owner unterbunden.
JDialog(owner, title, modal) Zusätzlich zum vorhergehenden Konstruktor wird hier ein Titel als String mit übergeben.

Methoden

Ebenfalls werden uns von JDialog wieder etliche Methoden zur Verfügung, welche größtenteils schon von JFrame bekannt sind.
  • setSize()
  • setDefaultCloseOption()
  • setTitle()
  • setLocation()
  • getContentPane().setBackground(Color xyz)
  • setLayout()
  • setVisible()

Beispiel für ein JDialog-Fenster


import java.awt.Color;
import javax.swing.JDialog;

/**
 * Beispielprogram für JDialog
 * @author Markus Badzura
 */
public class Dialogfenster 
{
    public static void main(String[] args) 
    {
        JDialog d = new JDialog();
        d.setSize(200,150);
        d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        d.setLocation(400,300);
        d.getContentPane().setBackground(Color.red);
        d.setTitle("Dialogfenster");
        d.setLayout(null);
        d.setVisible(true);
    }
}
In diesem Beispiel gerade ist ein einfacher Konstruktor verwendet worden. Bevor allerdings das nächste Beispiel gezeigt wird, will ich kurz auf weitere Methoden eingehen, welche JDialog zur Verfügung stellt.
Methode Erklärung
dispose() zerstört das JDialog-Objekt
isModal() Liefert den Wert true zurück, wenn das JDialog-Objekt modal ist.
setModal(booleanwert) Setzt das JDialog-Objekt auf modal (Übergebener booleanwert true) oder auf non verbal, falls false übergeben wird.
Um die Modalität zu demonstrieren, wurde im nächsten Beispiel einmal ein JFrame-Objekt erstellt und ein JDialog-Objekt. Dem JDIalog-Objekt wurde als owner das JFrame-Objekt übergeben.

import javax.swing.JDialog;
import javax.swing.JFrame;

/**
 * Beispiel eines modal-gesetzten JDialogs
 * @author Markus Badzura
 */
public class Modal 
{
    public static void main(String[] args) 
    {
        JFrame f = new JFrame();
        JDialog d = new JDialog(f, "Dialogfenster", true);
        f.setSize(200,200);
        f.setTitle("Fenster");
        f.setLocation(300,300);
        d.setSize(200,200);
        d.setLocation(550,300);
        d.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
        d.setVisible(true);
    }
}
Nach Ausführung lässt sich erkennen, dass das JDialog-Fenster aktiv ist, und das JFrame-Fenster ausgegraut ist. Eine Aktivierung des JFrame-Fenster ist nicht möglich.

Erst wenn wir das JDialog-Objekt schließen wird ein Zugriff auf das Owner-Objekt des JDialog-Objektes wieder möglich.
nach oben Java4Beginners -- Seitenversion 1.0 -- Stand: 2017-05-02