На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> события и JComponent
    Здравствуйте!

    Никак не могу решить следующую проблему:

    Представьте,
    есть контейнер, (например MyPanel extends JPanel), в который родным методом JPanel.add(JComponent component) добавлены кнопки и лэйблы.
    есть некий ui объект, наследник JComponent (например MyBar extends JComponent), который НЕ добавлен на панель MyPanel методом add, но при этом отрисован в переопределенном методе MyPanel.paint
    что-то вроде того:
    ExpandedWrap disabled
      public void paint(Graphics g) {
        super.paint();
        mybar.paint(g);
      }

    Рисуется все отлично, но проблема в том, что все компоненты, добавленные с помощью add могут перехватывать события (то есть прикрепленные к ним слушатели эти события нормально обрабатывают), а до mybar события не доходят. Механизма, который позволил бы каким-либо образом заставить mybar тоже перехватывать события (например MouseEvent) я не нашел. Единственный выход - использовать метод add, но этот способ не подходит.. Исходный код метода add и т.д. ситуацию не прояснил :(

    Надеюсь на вашу помощь
      Цитата shipbrother @
      Единственный выход - использовать метод add, но этот способ не подходит.

      Почему?
        Цитата shipbrother @
        Единственный выход - использовать метод add, но этот способ не подходит.. Исходный код метода add и т.д. ситуацию не прояснил :(

        Кхм. Я думал, что возможность доставки сообщений только известным контейнеру компонентам очевидна. Ан нет. Как вы думаете, сможет ли контейнер передать событие на обработку компонентам, о существовании которых не подозревает?

        Мне не совсем понятна потребность невидимых компонентов в событиях ввода. РасскажИте о решаемой вами задаче - будет проще вам помочь.
          wind, batigoal, спасибо за участие, но я вчера вечером сам уже почти разобрался. Помогла книжка Ивана Портянкина (вроде не ошибся с фамилией)

          Смысл такой: надо нарисовать граф, при этом элементы графа должны быть интерактивными (отвечать на события мыши и т.д.) Проблема в том, что вызов super.paint(g) в переопределенном методе paint контейнера рисовал мои звенья, но из-за связей между ними, которые отрисовывал я самостоятельно, картинка была не подходящей.

          как вариант - структура графа может быть такой, что при отрисовке звеньев часть звеньев может быть нарисованы поверх других, причем факт того какие звенья надо рисовать раньше и позже хранится в спец. модели. получается что при таком подходе нельзя контролировать порядок отрисовки компонентов или же придется их пересортировывать, то есть в определенный момент удалять из контейнера, сортировать и опять их туда помещать, что не совсем удобно.
          думаю что могут быть и другие неприятности.
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0188 ]   [ 14 queries used ]   [ Generated: 18.05.24, 17:50 GMT ]