同様の問題を解決する方法は、モーダル確認ダイアログを表示するウィンドウリスナーをメインフレームに取り付けることでした。
ダイアログが確認されてもログインが間違っている場合は、再表示できます。キャンセルされた場合、アプリケーションを閉じることができます。
JPanel loginPanel = new LoginPanel();
this.getFrame().addWindowListener(new WindowAdapter() {
public void showLoginDialog()
{
int result = JOptionPane.showConfirmDialog(
mainView.getFrame(),
loginPanel, "Login... ",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE,
null);
if (result == JOptionPane.OK_OPTION)
{
if(!loginPanel.checkLogin())
{
showLoginDialog();
}
}
else
{
System.exit(0); // replace with your more graceful shutdown code
}
}
@Override
public void windowOpened(WindowEvent e)
{
showLoginDialog();
}
});
答えていただきありがとうございます – Herman