2010-10-17 15 views
7

Ich versuche, einen modalen Dialog vor einem Applet anzuzeigen.Wie öffne ich einen modalen Dialog im Java Applet?

Meine aktuelle Lösung holt die Wurzel-Frame wie folgt:

Frame getMyParent() { 
    Container parent = getParent(); 
    while (!(parent instanceof Frame)) { 
     parent = ((Component)parent).getParent(); 
    } 
    return (Frame)parent; 
} 

und schafft den Dialog wie folgt:

public OptionsDialog(MainApplet applet, boolean modal) { 
    super(applet.getMyParent(), "options", modal); 
    // .... 

jedoch oft dies zeigt den modalen Dialog unter den Rahmen, obwohl die modales Verhalten funktioniert korrekt.

Wie kann das behoben werden?

Idealerweise sollte dies für Java-Versionen 1.5 und höher sein.

Antwort

2

Verwenden null insterad von applet.getMyParent()

+0

Hmmm, null verwendet werden, die Eigentümer Rahmen 'SwingUtilities.getSharedOwnerFrame()' gesetzt - ich werde testen, danke! – Nick

+0

Leider behebt dies das Problem nicht, ich habe es nur mit Chrome getestet und es zeigt ständig unter der Seite. – Nick

4
JDialog dialog = new JDialog(SwingUtilities.windowForComponent(this)); 
dialog.setModal(true); 
dialog.setSize(200, 200); 
dialog.setVisible(true); 
+0

Danke camickr. Unglücklicherweise benötigt dies Version 1.6 und ich bin dabei, Java 1.5 zu unterstützen (wie viele Leute das immer noch benutzen). Entschuldigung für die Unklarheiten, ich habe die Frage bearbeitet. – Nick

+0

Ich bin mir nicht bewusst, dass Code, den ich gepostet habe, einzigartig für Version 1.6 ist. – camickr

+0

Ich fand den JDialog (Window) -Konstruktor 1.6 spezifisch: http://download.oracle.com/javase/6/docs/api/javax/swing/JDialog.html#JDialog(java.awt.Window) – Nick

3

Rahmen F = (Frame) SwingUtilities.getAncestorOfClass (Frame.class, Parent); neuer JDialog (f, wahr);

(source = http://kb.trisugar.com/node/7613) Werke für Parent = sun.plugin2.main.client.PluginEmbeddedFrame

Verwandte Themen