Как программировать панель, которая обрабатывает свою собственную мышь E

JPanel

Этот совет Java Swing иллюстрирует способ программирования панель, которая обрабатывает свои собственные события мыши. Автономных JPanel класс, который обрабатывает свои собственные события мыши.


import java.awt.*;

import java.awt.event.*;

import javax.swing.*;



public class SelfContainedPanel extends JPanel {

   

   private int x1, y1, x2, y2;



   public SelfContainedPanel()

   {

      addMouseListener(

         new MouseAdapter() {

            public void mousePressedMouseEvent e )

            {

               x1 = e.getX();

               y1 = e.getY();

            }



            public void mouseReleasedMouseEvent e )

            {

               x2 = e.getX();

               y2 = e.getY();

               repaint();

            }

         }

      );



      addMouseMotionListener(

         new MouseMotionAdapter() {

            public void mouseDraggedMouseEvent e )

            {

               x2 = e.getX();

               y2 = e.getY();

               repaint();

            }

         }

      );

   }



   public Dimension getPreferredSize()

   {

      return new Dimension150100 );

   }



   public void paintComponentGraphics g )

   {

      super.paintComponent);



      g.drawOvalMath.minx1, x2 ), Math.miny1, y2 ),

                  Math.absx1 - x2 ), Math.absy1 - y2 ) );

   }

}



// Creating a self-contained subclass of JPanel 

// that processes its own mouse events.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;



public class SelfContainedPanelTest extends JFrame {

   private SelfContainedPanel myPanel;



   public SelfContainedPanelTest()

   {

      myPanel = new SelfContainedPanel();   

      myPanel.setBackgroundColor.yellow );



      Container c = getContentPane();

      c.setLayoutnew FlowLayout() );

      c.addmyPanel );



      addMouseMotionListener(

         new MouseMotionListener() {

            public void mouseDraggedMouseEvent e )

            {

               setTitle"Dragging: x=" + e.getX() +

                         "; y=" + e.getY() );

            }



            public void mouseMovedMouseEvent e )

            {

               setTitle"Moving: x=" + e.getX() +

                         "; y=" + e.getY() );

            }

         }

      );



      setSize300200 );

      show();

   }



   public static void mainString args[] )

   {

      SelfContainedPanelTest app =

         new SelfContainedPanelTest();



      app.addWindowListener(

         new WindowAdapter() {

            public void windowClosingWindowEvent e )

            {

               System.exit);

            }

         }

      );

   }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>