1

通常、アプレットに JOptionPane ポップアップがあります。

      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]);

thisJApplet オブジェクトを参照します。

ポップアップは正常に機能しますが、アプレットの前にポップアップするのではなく、アプレットの後ろに表示されることがあります。

4

2 に答える 2

0

無意識のうちに、親コンポーネントを渡している可能性があります。具体的には、「これ」を showOptionDialog() に入れます。「これ」が実際に親コンポーネントであることを確認してください。

「これ」がフレームを参照している場合、次のようにして、どのフレームがフォーカスされているかを見つけることができます。

(疑似コード)

myFrames[] = Frame.getFrames();

if ( myFrames[i].isFocused() ) 渡すフレーム:)

于 2010-11-22T22:13:01.523 に答える
0

やるべきことは、Frame であるアプレットの親を見つけ (これは隠しプラグイン固有のタイプです)、そのフレームをダイアログの所有者として使用することです。あなたはそれを見つけることができます(Frame)SwingUtilities.getAncestorOfClass(java.awt.Frame.class, theApplet);

これにより、ダイアログがブラウザの上に残るようになります。ただし、ユーザーがブラウザのタブを切り替えても、ダイアログは非表示になりません。

于 2010-11-30T19:32:07.353 に答える