Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как закрепить «JDialog» на фоне «JFrame»?  (Прочитано 9586 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Vantuz-Subhuman
Участник

ru
Offline Offline
Пол: Мужской

« : 04-12-2010 15:48 » 

Здравствуйте.
Основное окно программы небольшое. Если пользователь отмечает в опциях соответствующий пункт, включается неактивный недекорированный 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? Или можно добиться того же какими-нибудь другими средствами?
Записан

«You should never underestimate the predictability of stupidity»,
«Never attribute to malice that which can be adequately explained by stupidity»
Man1BLR
Участник

by
Offline Offline
Пол: Мужской

« Ответ #1 : 04-12-2010 16:48 » 

Vantuz-Subhuman, такими действиями ты хочешь скрыть содержание главного фрейма, чтобы было пусто?
Записан
Vantuz-Subhuman
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 04-12-2010 18:10 » 

Vantuz-Subhuman, такими действиями ты хочешь скрыть содержание главного фрейма, чтобы было пусто?

Нет. Это нужно, чтобы скрыть фон (всё, что ЗА главным фреймом).
Была идея просто разворачивать главный фрейм на весь экран, оставляя его содержимое в небольшой панели посередине. Но идея именно с _затемнением_ фона за фреймом показалась более... элегантной Улыбаюсь
Записан

«You should never underestimate the predictability of stupidity»,
«Never attribute to malice that which can be adequately explained by stupidity»
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 05-12-2010 13:01 » 

Vantuz-Subhuman, может проще всё вне главного фрейма переводить в неактивный режим и перекрашивать?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines