|
|
|
про Листеренеры и панели
|
|||
|---|---|---|---|
|
#18+
Доброго веремени суток уважаемые. просветите такой вопрос плиз. имеем контейнер (JPanel), на него навешиваем MouseListener. проверяем - методы листенера вызываеются. далее добавляю панель(еще одну) в контейнер. на неё также навешиваю МouseListener, теперь вызываются методы нового листенера, при возникновении событий, а методы листенера контейнера не вызываются. новая панель не передает событие дальше контейнеру. в какую сторону смотреть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 15:46:52 |
|
||
|
про Листеренеры и панели
|
|||
|---|---|---|---|
|
#18+
Попробуйте переопределить метод processEvent в контейнере. Хотя, скорее всего не прокатит... Можно совсем жестко поступить - подсунуть свою реализацию EventQueue - и там определять где событие произошло... Но это слишком громоздко будет, и неуклюже. Может и более изящное решение есть - но я его не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 16:02:07 |
|
||
|
про Листеренеры и панели
|
|||
|---|---|---|---|
|
#18+
Один и тот же листенер навесте и на родителя и на потомка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 16:05:26 |
|
||
|
про Листеренеры и панели
|
|||
|---|---|---|---|
|
#18+
а ларчик открывался просто! для тех кому интересно : 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); } т.е. конвертируем месягу в пределы нового контейнера и принудительно передаем туда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2007, 20:35:44 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2146288]: |
0ms |
get settings: |
18ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
40ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
68ms |
get tp. blocked users: |
3ms |
| others: | 298ms |
| total: | 475ms |

| 0 / 0 |
