Advanced
Java
Services
|
Dialog |
Dialog ist ein von einem anderen Dialog oder von einem Frame abhängiges
TopLevelFenster. Ein Dialog hat einen Titelbalken wie ein Frame, allerdings ohne Icon.
Da er sich aber von Window ableitet und nicht von Frame kann er keine
MenuBar aufnehmen (siehe auch
MenuComponentHierarchie). Diesen Fehler hat man in Swing
behoben, die Ableitung JDialog von Dialog kann eine JMenuBar aufnehmen.
Konstruktoren | |
Dialog(Dialog owner) |
Constructs an initially invisible, non-modal Dialog with an empty title and the specified owner dialog. |
Dialog(Dialog owner, String title) |
Constructs an initially invisible, non-modal Dialog with the specified owner dialog and title. |
Dialog(Dialog owner, String title, boolean modal) |
Constructs an initially invisible Dialog with the specified owner dialog, title, and modality. |
Dialog(Frame owner) |
Constructs an initially invisible, non-modal Dialog with an empty title and the specified owner dialog. |
Dialog(Frame owner, String title) |
Constructs an initially invisible, non-modal Dialog with the specified owner dialog and title. |
Dialog(Frame owner, String title, boolean modal) |
Constructs an initially invisible Dialog with the specified owner dialog, title, and modality. |
Wichtige Methoden | |
Returntyp | Name der Methode |
Konfigurierung des Titelbalkens | |
---|---|
String | getTitle() Gets the title of the dialog. |
void | setTitle(String title) Sets the title for this dialog to the specified string. |
Aussehen, Zustand | boolean | isModal() Indicates whether the dialog is modal. |
void | setModal(boolean b) Specifies whether this dialog should be modal. |
boolean | isResizable() Indicates whether this dialog is resizable by the user. |
void | setResizable(boolean resizable) Sets whether this dialog is resizable by the user. |
boolean | isUndecorated() Indicates whether this dialog is undecorated. |
void | setUndecorated(boolean undecorated) Disables or enables decorations for this dialog. |
Ein Dialog kann modal sein oder nicht-modal. Ein modaler Dialog ist reaktionsbedürftig und behält
immer den Fokus. Er blockiert den TLC, aus dem heraus er erzeugt worden ist solange, bis der
Benutzer den Dialog beendet (in der Regel. in dem der Benutzer auf einen Button klickt). Ein
Standardbeispiel für einen modalen Dialog ist der bekannte YesNoCancel-Dialog.
Ein nicht-modaler Dialog ist nicht reaktionsbedürftig. Er kann den Fokus verlieren und man kann
den Fokus zurücklegen auf den TLC, der den Dialog erzeugt hat. das Standardbeispiel für einen
nichtmodealen Dialog ist der Suchen-und-Ersetzen Dialog bei Texteditoren.
Initialisierung, Layout und Eventhandling
Einen Dialog initialisieren
Ein Dialog wird ähnlich zu einem Frame initialisiert.
Dialog dial = Dialog(owner, "nichtmodaler Dialog") ;
// owner ist ein Frameobjekt
dial.setLocation(100,100);
dial.setSize(400,300);
dial.setVisible(true);
Aufnehmen von Komponenten und Layout
Das Defaultlayout für Dialog wird von Window übernommen und ist daher BorderLayout.
Einzelheiten, wie man Komponenten in einen Container aufnimmt, der ein BorderLayout hat, findet man im
Kapitel Layout unter BorderLayout.
BorderLayout teilt den Dialog in fünf Regionen ein, von denen nicht alle benützt werden müssen.
Das Aufnehmen von Komponenten in die einzelnen Regionen erfolgt nach dem folgenden Schema:
dialog.add(komponente, BorderLayout.NORTH) ;
dialog.add(komponente, BorderLayout.CENTER) ;
// usw.
Eventhandling
Dialog erbt alle Methoden zum Thema Eventhandling von seinen Vorgängern. Wie man dieses einsetzt,
findet sich in einem eigenen Kapitel über Eventhandling.
Fokushandling
Die Version 1.4 hat die Klasse Dialog um eine ganze Reihe von neuen Methoden bereichert,
u.a. wurde die ganze Fokusbehandlung neu strukturiert. Eine Auflistung der neu hinzugekommenen
Methoden findet sich unter
New 1.4 methods in Component and its subclasses (Summary).
Auf das neue Fokusmanagement wird eingegangen in
Neues 1.4 FokusManagement.