powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / про Листеренеры и панели
5 сообщений из 5, страница 1 из 1
про Листеренеры и панели
    #34414030
Dispatcher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго веремени суток уважаемые.
просветите такой вопрос плиз.

имеем контейнер (JPanel), на него навешиваем MouseListener. проверяем - методы листенера вызываеются.

далее добавляю панель(еще одну) в контейнер. на неё также навешиваю МouseListener, теперь вызываются методы нового листенера, при возникновении событий, а методы листенера контейнера не вызываются. новая панель не передает событие дальше контейнеру.

в какую сторону смотреть ?
...
Рейтинг: 0 / 0
про Листеренеры и панели
    #34414038
Дуремар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте переопределить метод processEvent в контейнере. Хотя, скорее всего не прокатит...
Можно совсем жестко поступить - подсунуть свою реализацию EventQueue - и там определять где событие произошло... Но это слишком громоздко будет, и неуклюже.
Может и более изящное решение есть - но я его не знаю...
...
Рейтинг: 0 / 0
про Листеренеры и панели
    #34414040
Vurn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один и тот же листенер навесте и на родителя и на потомка.
...
Рейтинг: 0 / 0
про Листеренеры и панели
    #34414203
Dispatcher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а ларчик открывался просто!
для тех кому интересно :
addMouseMotionListener(new MouseMotionListener(){

public void mouseDragged(MouseEvent e) {
MouseEvent e1 = SwingUtilities.convertMouseEvent(MainRect.this, e, canvas);
canvas.dispatchEvent(e1);
}

public void mouseMoved(MouseEvent e) {
MouseEvent e1 = SwingUtilities.convertMouseEvent(MainRect.this, e, canvas);
canvas.dispatchEvent(e1);
}

});

addMouseListener(new MouseListener(){

public void mouseClicked(MouseEvent arg0) {
MouseEvent e = SwingUtilities.convertMouseEvent(MainRect.this, arg0, canvas);
canvas.dispatchEvent(e);
System.out.println("Click");
}

public void mouseEntered(MouseEvent arg0) {
MouseEvent e = SwingUtilities.convertMouseEvent(MainRect.this, arg0, canvas);
canvas.dispatchEvent(e);

}

public void mouseExited(MouseEvent arg0) {
MouseEvent e = SwingUtilities.convertMouseEvent(MainRect.this, arg0, canvas);
canvas.dispatchEvent(e);

}

public void mousePressed(MouseEvent arg0) {
MouseEvent e = SwingUtilities.convertMouseEvent(MainRect.this, arg0, canvas);
canvas.dispatchEvent(e);

}

public void mouseReleased(MouseEvent arg0) {
MouseEvent e = SwingUtilities.convertMouseEvent(MainRect.this, arg0, canvas);
canvas.dispatchEvent(e);

}


т.е. конвертируем месягу в пределы нового контейнера и принудительно передаем туда.
...
Рейтинг: 0 / 0
про Листеренеры и панели
    #34414317
Vurn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот Вам делать больше нечего....
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / про Листеренеры и панели
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]