![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| popov654 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 9.1.2009 Репутация: нет Всего: нет |
Всем доброго времени суток!
У меня весьма досадная проблема: в JDialog ни в какую не хочет устанавливаться иконка (методами setIcon() и setIcons(), хотя методы как будто поддерживаются. Тем временем, в JFrame аналогичные методы прекрасно работают. Что я делаю не так? P.S. Есть несколько версий, сейчас поэкспериментирую. Первая - возможно, иконка лучае JDialog только наследуется, и надо каким-то образом указать окно-владелец (owner). Вторая - быть может, устанавливать её надо до первого вывода на экран. И третья - иконки в диалогах вообще не поддерживаются, хотя я в это мало верю. Ваши соображения? |
|||
|
||||
| popov654 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 9.1.2009 Репутация: нет Всего: нет |
Сам задал, сам отвечаю.
Полазил по инету, кое-что почитал. В основном, то, что там написано - по большей части ерунда, настоящее решение я нашёл сам. Что предлагалось: 1. Создать фиктивный неотображаемый JFrame и сделать его хозяином, поставить ему нужную иконку. 2. Использовать JFrame вместо JDialog, модальность эмулировать. 3. Где-то даже предлагали писать собственную отрисовку заголовка. 4. Сделать JDialog resizable - странно, но помогает На самом деле первый вариант самый правильный, но здесь не освещён один важный момент: почему-то при таком варианте можно ставить любую иконку, а не только наследовать родительскую. Лично я просто переписал свои конструкторы, которые не соответствовали этому правилу (их было меньшинство) так, чтобы они принимали порождающий фрейм как аргумент. Теперь дело за малым - добавить в начало одну строку:
Здесь frame - это, разумеется, родительское окно. Вуаля - имеем JDialog, работающий с иконками точно так же, как и JFrame. При этом не надо ничего переопределять и, кроме того, наш диалог может быть nonResizable. Это сообщение отредактировал(а) popov654 - 28.1.2011, 01:11 |
|||
|
||||
| popov654 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 9.1.2009 Репутация: нет Всего: нет |
Маленькое замечание: иконка 32х32, используемая, к примеру, ОС Windows для отображения в широко известной панели, вызываемой по Alt+Tab, у JDialog всегда наследуется от хозяина, даже если задать другую. Однако иконку 16х16 для строки заголовка переопределить вполне можно (и часто даже нужно
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |