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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> repaint панели 
:(
    Опции темы
Reptor
Дата 21.7.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

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



Есть class CPanel extends JPanel и у него переопределён paintComponent и есть ещё   class PopUp extends JPopupMenu у которого 

Код

JMenuItem RemoveMenuItem = new JMenuItem("Remove");
        this.add(RemoveMenuItem);
        
        RemoveMenuItem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent arg0) {
                
                // Вот тут надо перерисовать CPanel
                //System.out.println(getParent().toString());
            }
        });


и это меню добавляется при шелчке мышки на панеле 

Код

PopUp spu = new PopUp(s);                          
spu.show(e.getComponent(), e.getX()+10, e.getY()+10);

 

так вот мне нужно как то в 
Код

RemoveMenuItem.addActionListener(new ActionListener(){


в обработчике выбора меню перерисовать саму панель но что то не выходит. Пробовал через getParent() но там ошибка вываливается.. как из обработчика попапа перерисовать панель  CPanel??





PM MAIL ICQ   Вверх
AntonSaburov
Дата 21.7.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



В отдельном треде.
Штука в том, что перерисовка и обработка событий от мышки/клавиатуры происходит в одном потоке. Посему надо создавать отльеный поток и в нем что-то делать.
PM MAIL WWW ICQ   Вверх
Reptor
Дата 21.7.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

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



дело в том что когда у меня это попап меню было создавалась не через класс а просто напрямую в панеле то метод repaint() был виден в обработчике и с перерисовкой не было проблем. А сейчас это отдельным классом (class PopUp extends JPopupMenu) и в нём не видно этой панели. 

PM MAIL ICQ   Вверх
Orange
Дата 22.7.2008, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 6.9.2004
Где: Russia, Moscow

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



Цитата(Reptor @ 21.7.2008,  17:18)
дело в том что когда у меня это попап меню было создавалась не через класс а просто напрямую в панеле то метод repaint() был виден в обработчике и с перерисовкой не было проблем. А сейчас это отдельным классом (class PopUp extends JPopupMenu) и в нём не видно этой панели.

Когда попап создавался в классе панели, то он прорисововался вместе со всеми остальными компонентами(то есть был один главный тред, в котором всё рисовалось).
Когда ты вынес её в отдельный класс, то прорисовка произойдёт только тогда, когда завершится основной трэд, который твоя панель. А завершиться он только  когда произойдёт dispose(поправьте если я не прав)
Так что создавай  отдельный поток.
--------------------
Пару дней назад я познакомился с мальчиком......
PM MAIL ICQ   Вверх
Reptor
Дата 22.7.2008, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

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



а можно показать на какомто маленьком примере.. я просто с потоками не имел дело
PM MAIL ICQ   Вверх
Orange
Дата 24.7.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 6.9.2004
Где: Russia, Moscow

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



Цитата(Reptor @ 22.7.2008,  11:22)
а можно показать на какомто маленьком примере.. я просто с потоками не имел дело

В обработчике запускаешь
Код

new Thread(new Runnable(){
 public void run(){
   new PopUp();
 }
}).start();


Это сообщение отредактировал(а) Orange - 24.7.2008, 12:48
--------------------
Пару дней назад я познакомился с мальчиком......
PM MAIL ICQ   Вверх
Reptor
Дата 24.7.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

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



Orange,  что то я не совсем понимаю... а что с того что я зделаю попап отдельным потоком?? ведь перерисовка должна выполняться в классе попапа при клике на какомто из под меню... чем тут поток поможет? Класс попапа то не знает про мою панель. Как тогда она перерисуется?
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1807 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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