Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Иконка в JDialog, Не устанавливается иконка в JDialog 
V
    Опции темы
popov654
  Дата 28.1.2011, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.1.2009

Репутация: нет
Всего: нет



Всем доброго времени суток!
У меня весьма досадная проблема: в JDialog ни в какую не хочет устанавливаться иконка (методами setIcon() и setIcons(), хотя методы как будто поддерживаются. Тем временем, в JFrame аналогичные методы прекрасно работают.
Что я делаю не так?

P.S. Есть несколько версий, сейчас поэкспериментирую. Первая - возможно, иконка лучае JDialog только наследуется, и надо каким-то образом указать окно-владелец (owner). Вторая - быть может, устанавливать её надо до первого вывода на экран. И третья - иконки в диалогах вообще не поддерживаются, хотя я в это мало верю. Ваши соображения?  smile 
PM MAIL   Вверх
popov654
  Дата 28.1.2011, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.1.2009

Репутация: нет
Всего: нет



Сам задал, сам отвечаю.  smile 
Полазил по инету, кое-что почитал.
В основном, то, что там написано - по большей части ерунда, настоящее решение я нашёл сам.
Что предлагалось:
1. Создать фиктивный неотображаемый JFrame и сделать его хозяином, поставить ему нужную иконку.
2. Использовать JFrame вместо JDialog, модальность эмулировать.
3. Где-то даже предлагали писать собственную отрисовку заголовка.
4. Сделать JDialog resizable - странно, но помогает

На самом деле первый вариант самый правильный, но здесь не освещён один важный момент: почему-то при таком варианте можно ставить любую иконку, а не только наследовать родительскую.
Лично я просто переписал свои конструкторы, которые не соответствовали этому правилу (их было меньшинство) так, чтобы они принимали порождающий фрейм как аргумент. Теперь дело за малым - добавить в начало одну строку:

Код

super(frame);


Здесь frame - это, разумеется, родительское окно. Вуаля - имеем JDialog, работающий с иконками точно так же, как и JFrame. При этом не надо ничего переопределять и, кроме того, наш диалог может быть nonResizable.  smile 


Это сообщение отредактировал(а) popov654 - 28.1.2011, 01:11
PM MAIL   Вверх
popov654
Дата 1.2.2011, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.1.2009

Репутация: нет
Всего: нет



Маленькое замечание: иконка 32х32, используемая, к примеру, ОС Windows для отображения в широко известной панели, вызываемой по Alt+Tab, у JDialog всегда наследуется от хозяина, даже если задать другую. Однако иконку 16х16 для строки заголовка переопределить вполне можно (и часто даже нужно  smile )
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0408 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.