JOptionPane.showOptionDialog并不总是在Applet中移到前面

时间:2010-11-22 21:46:31

标签: java applet focus joptionpane

我的applet中通常有一个JOptionPane弹出窗口,a-la:

      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对象。

弹出窗口工作正常,但有时它会出现在applet后面,而不是在它前面弹出。

2 个答案:

答案 0 :(得分:0)

在不知不觉中,你可能不会传递父组件;特别是“this”进入showOptionDialog()。确保“this”实际上是父组件。

如果“this”指的是Frame,您可以通过执行以下操作找到焦点是什么帧:

(pseduo code)

myFrames [] = Frame.getFrames();

if(myFrames [i] .isFocused())    传入的框架:)

答案 1 :(得分:0)

要做的是找到作为Frame的applet的父级(它是隐藏的,特定于插件的类型),并将该框架用作对话框所有者。您可以使用(Frame)SwingUtilities.getAncestorOfClass(java.awt.Frame.class, theApplet);

找到它

这将确保对话框保持在浏览器之上。但是,如果用户切换浏览器选项卡,则对话框不会隐藏。