2010-10-17 11 views
7

Próbuję wyświetlić modalne okno dialogowe przed numerem Applet.Jak otworzyć modalne okno dialogowe w aplecie Java?

Moje obecne rozwiązanie pobiera rama korzeń tak:

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

i tworzy okno następująco:

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

Jednak często to pokazuje modalne okno dialogowe poniżej ramkę, choć modalne zachowanie działa poprawnie.

Jak można to naprawić?

Idealnie powinno to być dla wersji Java 1.5 i nowszych.

Odpowiedz

2

Zastosowanie zerowy insterad z applet.getMyParent()

+0

Hmmm, używając NULL ustawi ramkę właściciela do 'SwingUtilities.getSharedOwnerFrame()' - będę testować, dzięki! – Nick

+0

Niestety to nie rozwiązuje problemu, testowałem tylko w Chrome i konsekwentnie wyświetla się pod stroną. – Nick

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

Dzięki camickr. Niestety wymaga to wersji 1.6 i utknąłem z obsługą Java 1.5 (jak wiele osób nadal używa tego). Przepraszam, że nie wyjaśniam, zredagowałem to pytanie. – Nick

+0

Nie jestem świadomy, że napisany przeze mnie kod jest unikalny dla wersji 1.6. – camickr

+0

Znalazłem, że konstruktor JDialog (Window) ma specyfikację 1.6: http://download.oracle.com/javase/6/docs/api/javax/swing/JDialog.html#JDialog(java.awt.Window) – Nick

3

wielkość F = (ramki) SwingUtilities.getAncestorOfClass (Frame.class, parentWindow); nowy JDialog (f, prawda);

(source = http://kb.trisugar.com/node/7613) prace dla parentWindow = sun.plugin2.main.client.PluginEmbeddedFrame

Powiązane problemy