我的问题似乎与用户切换浏览器选项卡时如何从 JApplet 中隐藏 JDialog非常相关?但它没有提供有效的解决方案。
我开发了一个使用 JWS/JNLP 部署的小程序。它从显示“新游戏”对话框开始。
private class NewGameDialog extends CustomDialog implements ActionListener {
...
public NewGameDialog () {
super(topContainer, "NEW GAME", modalityType);
System.out.println(topContainer + " " + modalityType);
//prints JApplet and DOCUMENT_MODAL
...
CustomDialog
只是扩展JDialog
:
public class CustomDialog extends JDialog implements WindowListener {
public CustomDialog(Container cont, String title, ModalityType modalityType) {
super(windowForComponent(cont), title, modalityType);
}
public static Window windowForComponent(Component c) {
if (c instanceof Window) return (Window) c;
return SwingUtilities.windowForComponent(c);
}
...
这是JDialog
从 GUI 类调用的方式:
public void requestNewGame () {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
NewGameDialog dialog = new NewGameDialog();
dialog.setVisible(true);
}
});
}
我使用了如何在对话框中使用模态中描述的不同类型的模态。JDialog
目标是在用户切换到浏览器中的另一个选项卡时隐藏。但似乎没有一个选项不起作用。该对话框保持浮动在所有选项卡之上。
请告诉我如何在用户移动到另一个选项卡时隐藏对话框并在用户返回我的小程序选项卡后再次显示?