Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.58.185.199] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте!
Никак не могу решить следующую проблему: Представьте, есть контейнер, (например MyPanel extends JPanel), в который родным методом JPanel.add(JComponent component) добавлены кнопки и лэйблы. есть некий ui объект, наследник JComponent (например MyBar extends JComponent), который НЕ добавлен на панель MyPanel методом add, но при этом отрисован в переопределенном методе MyPanel.paint что-то вроде того: public void paint(Graphics g) { super.paint(); mybar.paint(g); } Рисуется все отлично, но проблема в том, что все компоненты, добавленные с помощью add могут перехватывать события (то есть прикрепленные к ним слушатели эти события нормально обрабатывают), а до mybar события не доходят. Механизма, который позволил бы каким-либо образом заставить mybar тоже перехватывать события (например MouseEvent) я не нашел. Единственный выход - использовать метод add, но этот способ не подходит.. Исходный код метода add и т.д. ситуацию не прояснил Надеюсь на вашу помощь |
Сообщ.
#2
,
|
|
|
Цитата shipbrother @ Единственный выход - использовать метод add, но этот способ не подходит. Почему? |
Сообщ.
#3
,
|
|
|
Цитата shipbrother @ Единственный выход - использовать метод add, но этот способ не подходит.. Исходный код метода add и т.д. ситуацию не прояснил Кхм. Я думал, что возможность доставки сообщений только известным контейнеру компонентам очевидна. Ан нет. Как вы думаете, сможет ли контейнер передать событие на обработку компонентам, о существовании которых не подозревает? Мне не совсем понятна потребность невидимых компонентов в событиях ввода. РасскажИте о решаемой вами задаче - будет проще вам помочь. |
Сообщ.
#4
,
|
|
|
wind, batigoal, спасибо за участие, но я вчера вечером сам уже почти разобрался. Помогла книжка Ивана Портянкина (вроде не ошибся с фамилией)
Смысл такой: надо нарисовать граф, при этом элементы графа должны быть интерактивными (отвечать на события мыши и т.д.) Проблема в том, что вызов super.paint(g) в переопределенном методе paint контейнера рисовал мои звенья, но из-за связей между ними, которые отрисовывал я самостоятельно, картинка была не подходящей. как вариант - структура графа может быть такой, что при отрисовке звеньев часть звеньев может быть нарисованы поверх других, причем факт того какие звенья надо рисовать раньше и позже хранится в спец. модели. получается что при таком подходе нельзя контролировать порядок отрисовки компонентов или же придется их пересортировывать, то есть в определенный момент удалять из контейнера, сортировать и опять их туда помещать, что не совсем удобно. думаю что могут быть и другие неприятности. |