2010-11-22 61 views
1

我有一個彈出式的JOptionPane在我的小程序通常,一拉:JOptionPane.showOptionDialog並不總是移動到前面的Applet

 Object[] options = {"Grade", "Save", "Cancel"}; 
     selection = JOptionPane.showOptionDialog(this, 
     "Do you want to grade now or save your work to continue later?", 
     "Grade Or Save", 
     JOptionPane.DEFAULT_OPTION, 
     JOptionPane.QUESTION_MESSAGE, 
     null, 
     options, 
     options[2]); 

this指JApplet的對象。

彈出正常工作和一切,但偶爾會出現小程序後面,而不是在它的面前突然出現的。

回答

0

在不知不覺中,你可能並不傳入父組件;特別是將「this」放入showOptionDialog()中。確保「this」實際上是父組件。

如果 「本」 指的是你能找到的是什麼框架焦點通過執行以下一個框架:

(pseduo代碼)

myFrames [] = Frame.getFrames();

如果(myFrames [I] .isFocused()) 幀傳遞:)

+0

證實`this`實際上是在JApplet的,所以這不是問題。它似乎與用戶是否首先單擊該applet無關。 – 2010-11-22 22:36:07

0

做的是找到小程序,是一個框架的父的事(這是一個隱藏的,插件特定類型的)並將該幀用作對話框所有者。你可以找到與(Frame)SwingUtilities.getAncestorOfClass(java.awt.Frame.class, theApplet);

這將確保該對話框保持在瀏覽器的頂部。但是,如果用戶切換瀏覽器選項卡,則該對話框不會隱藏。