我的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后面,而不是在它前面弹出。
答案 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);
这将确保对话框保持在浏览器之上。但是,如果用户切换浏览器选项卡,则对话框不会隐藏。