Здравствуйте.
Основное окно программы небольшое. Если пользователь отмечает в опциях соответствующий пункт, включается неактивный недекорированный JDialog, служащий однотонным фоном. Он запускается таким методом:
public void setShowBackground()
{
if(!jdlgBackground.isVisible())
{
jdlgBackground.setVisible(true);
jfrm.toFront();
}
else
{
jdlgBackground.setVisible(false);
}
}
Проблема в том, что при переключении фокуса на окно какой-нибудь другой программы и возврате, JDialog не отображается (т.к. он не активен).
Пробовал решить проблему с помощью FocusListener'а, но после команды jfrm.toFront() снова возникает событие фокуса и начинаются жуткие лаги.
Пробовал оформить FocusListener следующим способом:
jdlg.setVisible(false);
jdlg.setVisible(true);
jfrm.setFocusable(false);
jfrm.toFront();
jfrm.setFocusable(true);
Но он почему-то не работает.
Вопрос: можно ли как-то «закрепить» неактивный JDialog на фоне JFrame? Или можно добиться того же какими-нибудь другими средствами?