JFrame oder JDialog

Status
Nicht offen für weitere Antworten.
A

antion

Gast
Hallo Leute,

zZ bastel ich mir eine Application mit mehreren Fenstern. Bisher habe ich immer JDialog verwendet, damit die auch schön modal sind.
Da ich unter Mac arbeite, bin ich jetzt kürzlich darauf gestoßen, wie ich diesen schönen Metal Look bekomme, nämlich durch

Java:
JFrame.getRootPane().putClientProperty("apple.awt.brushMetalLook", Boolean.TRUE);

Mache ich das bei einem JDialog, wird das getrost ignoriert. Wie ich dann über Google erfahren habe, soll das irgendwie auch nicht funktionieren, man solle lieber ein JFrame verwenden. Schön und gut, das habe ich auch gemacht, musste dann aber leider feststellen, dass ich es nicht modal machen kann.

Ist es irgendwie möglich, das Frame modal zu machen? Mir würde es reichen, dass es einfach immer wieder den Focus bekommt, wenn es ihn verliert... aber irgendwie funktioniert Frame2.requestFocus(); leider auch nicht.

Weiß jemand einen Rat?
 

Ebenius

Top Contributor
System-modale Dialoge sind out. ;-)

Im Ernst, sowas nervt die meisten Benutzer. Ob man einen Dialog oder ein Frame verwendet sollte eigentlich nicht vom Aussehen abhängen. Ein Dialog existiert in der Regel nicht ohne einen Parent. Dieser Parent ist entweder ein Frame oder ein anderer Dialog (der natürlich einen Parent hat). Es gibt da auch ein paar Ausnahmen; zum Beispiel ein Einstellungsdialog der zu einem TrayIcon gehört.

Wenn ein Fenster über die gesamte Laufzeit einer Anwendung offen bleibt, sollte es über eine Task-Bar erreichbar sein. Dann ist ein Frame zu verwenden. Ein Dialog ist nur für zeitlich begrenzte Interaktionen zwischen einer Anwendung und dem Benutzer zu verwenden.

Warum brauchst Du denn system-modale Fenster?

Ebenius
 

KrokoDiehl

Top Contributor
Morgen.
Es gibt auch für JFrame die Methode
Code:
setModalExclusionType()
. Ich weiß nicht genau ob das tut, aber damit kannst du ja mal herumspielen ;)
 
A

antion

Gast
Danke für die schnellen Antworten!

Hm... ich brauche das modale Fenster für viele Dinge:

Zum einen v.a. für die Einstellungen: Entweder der Benutzer setzt die Einstellungen, oder er agiert im Hauptprogramm. Beides gleichzeitig halte ich für Unsinn. Erst wenn er auf "Speichern" oder "Abbrechen" (bzw. Schließen) geklickt hat, soll das Hauptfenster wieder aktiv werden. Dabei geht es mir nicht nur um Benutzerfreundlichkeit, sondern um den DAU ;)
Zum anderen habe ich in meinem Programm auch ein paar Prozesse, die ich in einem Dialog in einer ProgressBar darstelle. Solange soll das gesamte Programm gesperrt sein.
...

Es gibt viele Gründe, warum nur mit dem obersten geöffneten Fenster agiert werden soll! :)
 

Ebenius

Top Contributor
> zZ bastel ich mir eine Application mit mehreren Fenstern. Bisher habe ich immer JDialog verwendet, damit die auch schön modal sind.

Entschuldige, ich habe wohl das Wort "immer" etwas überbewertet. Nichts gegen modale Dialoge, ich ging von system-modalen Dialogen aus. Keine Ahnung, ob das überhaupt noch ein Betriebssystem unterstützt, sowas ist ne Krankheit.

Die Einsatzgebiete die Du beschreibst sind klare Fälle für Dialoge, nicht für Frames. Daher solltest Du auch Dialoge nehmen und notfalls damit leben, dass irgendeine L&F-Einstellung nicht so interpretiert wird wie man es sich wünscht.

Ebenius
 
G

Gast2

Gast
Danke für die schnellen Antworten!

Hm... ich brauche das modale Fenster für viele Dinge:

Zum einen v.a. für die Einstellungen: Entweder der Benutzer setzt die Einstellungen, oder er agiert im Hauptprogramm. Beides gleichzeitig halte ich für Unsinn. Erst wenn er auf "Speichern" oder "Abbrechen" (bzw. Schließen) geklickt hat, soll das Hauptfenster wieder aktiv werden. Dabei geht es mir nicht nur um Benutzerfreundlichkeit, sondern um den DAU ;)
Zum anderen habe ich in meinem Programm auch ein paar Prozesse, die ich in einem Dialog in einer ProgressBar darstelle. Solange soll das gesamte Programm gesperrt sein.
...

Es gibt viele Gründe, warum nur mit dem obersten geöffneten Fenster agiert werden soll! :)

Ich denk mal für die meisten Fälle kannst du JOptionPane verwenden...
How to Make Dialogs (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
 
A

antion

Gast
Was sind denn system-modale Dialoge? ;)

Hm, vllt. kann ich den Gradient irgendwie selbst simulieren, aber nervig ist das irgendwie schon :(
 
A

antion

Gast
Ah, jetzt lese ich es erst

"...should not affect supporting windows like dialogs or preference windows."

Macht Sinn, dass er das dann für die Dialoge ignoriert. Je nach Lust und Laune muss ich das jetzt eben noch selbst simulieren.
Danke auf jeden Fall für die Hilfe.
 

Ebenius

Top Contributor
Wie machen das andere (Nicht-Java-)Anwendungen? Sind deren Dialoge auch so gestyled, oder empfindest Du das nur als hübscher? Ich würde mich eher an die Stilvorgaben des Herstellers halten, damit ein konsistentes L&F im System herrscht. Gerade auf dem Apple war die GUI-Integration für Java eigentlich immer hervorragend gelungen.

Ebenius
 
A

antion

Gast
Andere Anwendungen haben gerade bei Einstellungen oben eine ToolBar in diesem MetalLook. Ich habe das nun auch hinbekommen, indem ich einfach einen Gradient gesetzt habe. Leider ist es beim JDialog irgendwie so, dass ganz oben nun eine schwarze Linie ist, die das Ganze irgendwie stört... und leider bekomm ich die irgendwie nicht weg
 
A

antion

Gast
Oh okay....
Also wie ich feststelle, sind das bei anderen Applikationen keine Dialogs, sondern nicht-modale Fenster. Ich kann auch im Programm weiter arbeiten, ohne dass ich die Einstellungen schließen muss. Gefällt mir nicht, ist aber leider so.

Jetzt habe ich zwei Möglichkeiten: Ich nehme einen modalen Dialog, dann malt mir Mac OS aber einen schwarzen Strich an den oberen Rand. Das will ich eigentlich nicht, weil dann bringt mir mein Gradient nichts.
Nehme ich ein Frame - so wie es wohl vorgesehen ist - kann ich es nicht modal machen.

Ich werde wohl nun letztere Möglichkeit nehmen und dann eben ein AlwaysOnTop einstellen sowie die Haupt-GUI in der Zwischenzeit mit setEnabled(false) deaktivieren. Leider funktioniert das dann mit dem Focus nicht... Naja, was solls :(
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
D Swing Schließen von JDialog soll auch JFrame schließen. AWT, Swing, JavaFX & SWT 4
M JDialog statt JFrame AWT, Swing, JavaFX & SWT 22
M JDialog soll JFrame "blockieren" AWT, Swing, JavaFX & SWT 2
S Jframe aus JDialog starten AWT, Swing, JavaFX & SWT 4
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
J Swing JDialog gleichzeitig mit JFrame anzeigen AWT, Swing, JavaFX & SWT 8
U JFrame minimiert nach JDialog, JOptionPane AWT, Swing, JavaFX & SWT 3
E Daten von JDialog nach JFrame übertragen AWT, Swing, JavaFX & SWT 4
F ActionListener von JButton funktioniert mit JFrame aber nicht mit JDialog AWT, Swing, JavaFX & SWT 2
A Swing JFrame Werte aus JDialog übergeben AWT, Swing, JavaFX & SWT 4
KrokoDiehl Swing KeyEvents für JDialog / JFrame AWT, Swing, JavaFX & SWT 2
J JDialog nicht aus JFrame Rahmen ziehen AWT, Swing, JavaFX & SWT 4
D JDialog/JFrame Funktionalität übertragen AWT, Swing, JavaFX & SWT 3
M JDialog + JFrame + keine Java Tasse AWT, Swing, JavaFX & SWT 9
H JFrame mit JDialog-Darstellungsverhalten AWT, Swing, JavaFX & SWT 10
G Probleme mit static Methoden in JFrame/JDialog AWT, Swing, JavaFX & SWT 7
G JDialog hinter Glasspane von JFrame. Geht das? AWT, Swing, JavaFX & SWT 3
R ContentPane bei JFrame und JDialog AWT, Swing, JavaFX & SWT 2
N JFrame / JDialog: Verwischen bei Größenänderungen AWT, Swing, JavaFX & SWT 8
J Taskleisten-Eintrag: Ohne JDialog || JFrame möglich ? AWT, Swing, JavaFX & SWT 5
V JFrame -> JDialog -> JDialog: Problem owner AWT, Swing, JavaFX & SWT 3
G MouseEvent Problem mit JFrame über einen modalen JDialog AWT, Swing, JavaFX & SWT 3
Luma JDialog anpassen unmöglich / JFrame modal machen? AWT, Swing, JavaFX & SWT 10
J JDialog und dessen Konstruktor JDialog(JFrame owner) AWT, Swing, JavaFX & SWT 2
G Wie bekomme ich ein JFrame/JDialog zum Blinken? AWT, Swing, JavaFX & SWT 6
S Wechsel zwischen JFrame und JDialog durch Benutzerauswahl AWT, Swing, JavaFX & SWT 2
L-ectron-X Daten aus einem JDialog einem JFrame übergeben AWT, Swing, JavaFX & SWT 4
C JDialog im JFrame AWT, Swing, JavaFX & SWT 5
M daten von JDialog nach JFrame und umgekehrt AWT, Swing, JavaFX & SWT 4
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
Paty JFrame anfänger bräuchte hilfestellung AWT, Swing, JavaFX & SWT 7
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
Mausposition relativ zu JFrame bekommen AWT, Swing, JavaFX & SWT 6
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
N CPU Belastung bei offenem JFrame auf fast 100% AWT, Swing, JavaFX & SWT 15
N Knopf ganz oben (JFrame) AWT, Swing, JavaFX & SWT 9
N JFrame löscht alles, wenn groß gemacht AWT, Swing, JavaFX & SWT 9
N jFrame löscht am Ende des Threads alles AWT, Swing, JavaFX & SWT 2
N JFrame loescht alles, sobald der Thread zuende ist AWT, Swing, JavaFX & SWT 22
E JFrame resizing AWT, Swing, JavaFX & SWT 2
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
L JFrame Gui in anderer Methode aufrufen AWT, Swing, JavaFX & SWT 0
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
H Tabelle in JFrame einfügen AWT, Swing, JavaFX & SWT 1
VPChief Ein JFrame ohne setUndecorated(true); nicht verschiebbar machen. AWT, Swing, JavaFX & SWT 6
R Swing Hat mein JFrame meinen Component? AWT, Swing, JavaFX & SWT 2
R Swing Design des oberen Balkens in JFrame AWT, Swing, JavaFX & SWT 2
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
R Swing Komponente im JFrame überschreinen sich AWT, Swing, JavaFX & SWT 7
R Swing Ein gezeichneten String aus dem JFrame löschen AWT, Swing, JavaFX & SWT 5
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
T JFrame aktualisieren AWT, Swing, JavaFX & SWT 2
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
L Verbindung von Code und JFrame AWT, Swing, JavaFX & SWT 4
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
T JFrame Bild einfügen AWT, Swing, JavaFX & SWT 9
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
F JFrame zeigt nicht alle Elemente auf anhieb an AWT, Swing, JavaFX & SWT 4
P JPanle, JFrame und Graphics AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
K Grafik in JFrame einpassen AWT, Swing, JavaFX & SWT 3
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
J BackgroundJPanel passt sich dem JFrame nicht an AWT, Swing, JavaFX & SWT 7
C Swing JFrame ändert Größe AWT, Swing, JavaFX & SWT 0
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
K JFrame bei JUnit Tests AWT, Swing, JavaFX & SWT 2
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
R Swing JPanels auf JFrame auf verfügbaren Platz aufblasen AWT, Swing, JavaFX & SWT 4
JR2205 Swing JxMaps Einbindung Netbeans JFrame AWT, Swing, JavaFX & SWT 4
Zar von Domarus JFrame zu BufferedImage konvertieren AWT, Swing, JavaFX & SWT 3
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
Joker4632 JFrame in eine Runnable auslagern? AWT, Swing, JavaFX & SWT 4
M Limit für JFrame-Vergrößerung AWT, Swing, JavaFX & SWT 8
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
Ghostman1711 JFrame closing AWT, Swing, JavaFX & SWT 3
R Engineklasse mit JFrame AWT, Swing, JavaFX & SWT 4
M Default-WindowListener JFrame entfernen (Stichwort: iconified) AWT, Swing, JavaFX & SWT 4
ms_cikar Jframe zurück zu frame1 AWT, Swing, JavaFX & SWT 14
C Jframe ohne Rahmen AWT, Swing, JavaFX & SWT 3
lumpigerAffe Swing Jframe aktualisieren AWT, Swing, JavaFX & SWT 27
A Swing JFrame neuzeichnen lassen, position neu berechnen lassen? AWT, Swing, JavaFX & SWT 9
R JFrame schließen AWT, Swing, JavaFX & SWT 9
P Swing JFrame minimiert sich bei Doppelklick auf die Titel-Leiste AWT, Swing, JavaFX & SWT 16
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
I JFrame an Bildschirm anpassen AWT, Swing, JavaFX & SWT 1
I JFrame Bild strecken und auf Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben