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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к свойствам компонента-владельца, Объект панели получает свойства панели 
:(
    Опции темы
Aehn
Дата 4.5.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 24.4.2008

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



Как после размещения собственной компоненты на панель получить доступ к свойствам панели?

Иными словами, я создал свой класс, который отрисовывает себя. В составе класса определил обработчик события, скажем, перетаскивание компонента мышью. Теперь хотелось бы отследить свойства панели, на которой расположен мой объект, чтобы строить поведение объекта в соответствии с поведением панели-владельца объектом.

Можно ли (конечно можно, но как?) влиять на поведение объекта-владельца с помощью расположенного на нем собственного компонента: изменить его свойство, вызвать его метод ?

Код

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

    class MyComponent extends JComponent
    { /* наш базовый компонент */
       public MyComponent()
       {
            super();          
            setPreferredSize(new Dimension(200, 200)); /* выделяем объекту какое-то размер   */
            setBounds(10,10,120,120);                  /* и как-то располагаем его на экране */

            addMouseMotionListener(new java.awt.event.MouseMotionAdapter() /* ОБРАБОТЧИК СОБЫТИЙ */
            {
              Point oldPosition;                                           /* старая точка */
              public void mouseMoved(java.awt.event.MouseEvent e)          /* обработчик события простого передвижения */
              {  
                oldPosition = e.getPoint();                                /* позиция курсора мыши до момента нажатия кнопки мыши */
              }
              public void mouseDragged(java.awt.event.MouseEvent e)
              {
                Component comp = e.getComponent();                         /* объект для извлечения координат владельца этого компонента */
                Point newPosition = e.getPoint();                          /* находим новые координаты курсора мыши */
                if(oldPosition != null)
                {
                  Point loc = comp.getLocation();                          /* извлекаем координады владельца объекта */
                  /* здесь решается вооброс о новой позиции объекта */

/*!!!!!!!!
                 ЗДЕСЬ ХОТЕЛОСЬ БЫ 
                 1) ПОЛУЧИТЬ СВОЙСТВА КОМПОНЕНТА-ВЛАДЕЛЬЦА ЭТОГО ОБЪЕКТА
                 2) ПОВЛИЯТЬ НА СВОЙСТВА КОМПОНЕНТА-ВЛАДЕЛЬЦА
                 3) МОЖЕТ БЫТЬ ПОВЛИЯТЬ НА СВОЙСТВА КАКОГО-НИБУДЬ ЕЩЕ КОМПОНЕНТА
!!!!!!!!*/
                  comp.setLocation(newPosition.x - (oldPosition.x - loc.x),newPosition.y - (oldPosition.y - loc.y));
                }
              }
            });

       }
       public void paintComponent(Graphics g)
       {  super.paintComponent(g);
          g.drawRect(10,10,100,100);
       }
    }

public class Test0
    {
    JPanel jPanel1;

    public static void main(String[] args) {

    new Test0();

                 /* < 1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< */
                 /*
                 javax.swing.SwingUtilities.invokeLater(new Runnable() { 
                 public void run() { 
                          try {                     
                                 // UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");                    
                                    UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");                    
                              } catch ( Exception ex ) {} 
                                 //           showForm();             
                                    } 
                                                                       });   
                /* > 1 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */
    }

    public Test0()
    {
        jPanel1 = new JPanel();
        jPanel1.setLayout(null);

            JMenuBar menubar = new JMenuBar();
            JMenu menu = new JMenu("Menu");
            JMenu menu1 = new JMenu("Second menu");
            JMenuItem menuitem = new JMenuItem("Menu item");
        menu.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
                                                   ;
        }
        });
            JMenuItem eXit = new JMenuItem("Exit");
        eXit.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) { System.exit(0); }
        });
            JMenuItem mmx  = new JMenuItem("Добавить");
        mmx.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) { 
                               MyComponent myComponent = new MyComponent();
                               jPanel1.add( myComponent );
                               jPanel1.repaint();
                                                   }
        });

        // MyComponent myComponent = new MyComponent();

        //jPanel1 = new JPanel();
        //jPanel1.setLayout(null);

           menu.add(menuitem);
           menu1.add(mmx);
           menu.addSeparator();
           menu.add(eXit);
           menubar.add(menu);
           menubar.add(menu1);

        //jPanel1.add( menubar );
        //jPanel1.add( myComponent );

        JFrame frame = new JFrame("HelloWorldSwing");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.getContentPane().add(jPanel1);
        frame.setJMenuBar(menubar);
        frame.setSize(300, 300);

                          //try {                     
                          //       // UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");                    
                          //          UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");                    
                          //    } catch ( Exception ex ) {} 
                          //       //           showForm();             
                                 

        frame.setVisible(true);

    }
}

PM MAIL   Вверх
BegemotX2
Дата 5.5.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 13.11.2005

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



Код

javax.swing.JPanel parentPanel = (javax.swing.JPanel) getParent();

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


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

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