Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren

  • Themenstarter Themenstarter JavaHierUndDa
  • Beginndatum Beginndatum
J

JavaHierUndDa

Gast
Hallo Community,

ich habe folgendes Szenario: meine Anwendung läuft mit einem JFrame. Dieser öffnet weitere JFrames mit SwingUtilities.invokeLater(...), jeweils in einem "EDT". Nun kann es sein, dass in einem dieser "Bearbeitungsfenster" mal ein JOptionPane aufgeht (oder ein anderer JDialog). Dieser soll dann zwar den JFrame blockieren, der diesen Dialog aufgerufen hat. Doch alle anderen JFrames sollen nicht blockiert werden. Aber derzeit ist es so, dass alle JFrames blockiert sind, wenn ich in einem einen Dialog öffne.

Gibt es irgendeine Möglichkeit, das so umzudrehen, dass es so funktioniert, wie ich das beschrieben habe?

Beste Grüße,
JavaHierUndDa

P.S.: Mit setModalityType(...) und setModalExclusionType(...) habe ich schon rumgespielt, aber keinen Erfolg erzielt. Außerdem glaube ich, dass man das im JFrame einstellen müsste, da man ja auf den JDialog hinter JOptionPane keinen direkten Zugriff hat, um diese Eigenschaft zu manipulieren!
 
Zugegeben, mit den Details von sowas wie The New Modality API in Java SE 6 habe ich mich noch nicht beschäftigt, aber... Für Detailänderungen im Verhalten könnte es notwendig sein, seinen Dialog selbst zu bauen (aber ich bin nicht mal sicher, ob das DANN funktioniert). Falls niemand eine spontane Idee hat, kann man ja nochmal schauen.
 
Die JFrames jeweils mit invokeLater in einem neuen EDT zu starten wäre jetzt auch ersrmal.mein Ansarz gewesen, das klingt vernünftig. Aber da es ja so anscheinend nicht funktioniert probiers doch einfach mal aus jeden JFrame in einen "normalen" Thread zu starten.
 

Neue Themen


Zurück
Oben