![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
Доброго времени суток. Подскажите пожалуйста как сделать иконку мигающую, типа конвертика как в квипе или аське, когда пришли новые сообщения. Ето наверное надо писать собственный клас наследник от ImageIcon и в нем перекрывать метод paint или как? Думал, в лоб, анимированный gif, но не подходит, поскольку предполагается в перспективе менять частоту мигания.
-------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 23 Всего: 54 |
Вот один из способов:
-------------------- ![]() ![]() |
|||
|
||||
| _Michael |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
Спасибо большое. Твой код ИМХО можно немного усовершенствовать:
Тогда можно обойтись без таймера, внешнего по отношению к иконке
Это сообщение отредактировал(а) _Michael - 30.6.2007, 11:53 -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Ага, и получить 100% загрузку процессора и торможение всей системы -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 23 Всего: 54 |
Нельзя ни в коем случае Что действительно можно усовершенствовать - так это вместо наследования от JLabel сделать свой компонент и перерисовывать его не весь, а только в той области, где находится картинка. Ну и таймер (или управляющий поток) внутри этого класса спрятать, а активировать/деактивировать по HierarchyEvent'у. -------------------- ![]() ![]() |
|||
|
||||
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
LSD, я не знаю, ну у меня вроде все отлично работает, никакой стопроцентной загрузки не наблюдается.
w1nd,
ну почему, ведь в public void paintIcon(Component component, Graphics graphics, int x, int y), component ето ведь тот компонент на котором нашая иконка лежит, в данном случае JLabel. а на счет таймера то наверное вы таки правые. Это сообщение отредактировал(а) _Michael - 1.7.2007, 00:50 -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 23 Всего: 54 |
Потому что это приведёт к непрерывной перерисовке. -------------------- ![]() ![]() |
|||
|
||||
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
Ну тогда
тоесть репеинтать только тогда когда установлен флажок paint? который поменяется только тогда когда newTimestamp - timestamp) >= delay, т-е когда пройдет время delay -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Вроде или ты по Task Manager-у проверил? Проблема не только в том, что ты постоянно рисуешь один и тот же компонент. А в том, что ты инициализируешь цикл перерисовки. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
По таскменеджеру действительно показывает загрузку 60-70 процентов
if ((newTimestamp - timestamp) >= delay) { ........ } Ведь, как я полагаю, если таймер срабоет там, допустим, через 400 миллисекунд, то зачем тогда еще проверять прошло ли етих 400 миллисекунд в методе paintIcon ? -------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Если у тебя проц двуядерный или P4 HT, то это значит что одно ядро загружено на 100%. У меня просто одно ядро и это очень явно видно. Потому что помимо явного вызова repaint(), есть и другие причины по которой вызывается перерисовка компонента. Например ОС может потребовать от компонента перерисоваться. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| _Michael |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 1 Всего: 6 |
Тоесть чтоб была соблюдена частота мигания
-------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 4 Всего: 40 |
А я бы сделал такую оптимизацию ^_^
Мигание не будет сбиваться с такта, если фрейм свернуть. Это сообщение отредактировал(а) Platon - 17.2.2008, 15:03 |
|||
|
||||
![]()
|
| Правила форума "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. |