私の質問は、ユーザーがブラウザタブを切り替えたときにJAppletからJDialogを非表示にする方法に非常に関連しているようです。しかし、それは実用的な解決策を提供しません。
JWS/JNLPを使用してデプロイされたアプレットを開発しました。「NEWGAME」ダイアログの表示から始まります。
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
、ユーザーがブラウザの別のタブに切り替えたときに非表示にすることです。しかし、どのオプションも機能していないようです。ダイアログはすべてのタブの上に浮かんでいます。
ユーザーが別のタブに移動したときにダイアログを非表示にし、ユーザーがアプレットのタブに戻ったときに再度表示するにはどうすればよいですか?