Java
Home

Trabalhando com Paineis, usando mouse listener
Extendendo JPanel

 

/*
* SPainel.java
*
* Created on 26 de Fevereiro de 2007, 20:20
*/

package painel_mouse_listener;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

/**
*
* @author adrw
*/

public class SPainel extends JPanel {

private int x1, y1, x2, y2;

/** Creates a new instance of SPainel */
public SPainel() {

addMouseListener (

new MouseAdapter()
{
public void mousePressed( MouseEvent event )
{
x1 = event.getX();
y1 = event.getY();
}

public void mouseReleased( MouseEvent event )
{
x2 = event.getX();
y2 = event.getY();

repaint();
}
}

);

addMouseMotionListener(

new MouseMotionAdapter()
{
public void mouseDragged( MouseEvent event )
{
x2 = event.getX();
y2 = event.getY();

repaint();
}
}

);


}

public Dimension getPreferredSize()
{
return new Dimension( 150, 100 );
}

public void paintComponent( Graphics g )
{
// chama meio que obrigatoria
super.paintComponent( g );

g.drawOval( Math.min( x1, x2), Math.min( y1, y2), Math.abs(x1-x2), Math.abs(y1 - y2) );
}

public void setXY( int vx, int vy )
{
this.x2 = vx;
this.y2 = vy;

repaint();
}

}


/*
* Main.java
*
* Created on 26 de Fevereiro de 2007, 20:18
*/

package painel_mouse_listener;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.event.*;

import painel_mouse_listener.SPainel;

/**
*
* @author adrw
*/

public class Main extends JFrame {

   private SPainel myP;

   private JSlider slider;

   /** Creates a new instance of Main */
   public Main() {

      myP = new SPainel();
      myP.setBackground( Color.yellow );

      Container container = getContentPane();
      container.setLayout( new FlowLayout() );

      container.add( myP );

      addMouseMotionListener(

      new MouseMotionListener()
      {
         public void mouseDragged( MouseEvent event )
         {
            setTitle( "Apertando: x="+ event.getX() + "; y=" + event.getY() );
         }

         public void mouseMoved( MouseEvent event )
         {
            setTitle("Movendo x="+ event.getX() + "; y="+ event.getY() );
         }
      }

      );



      // slider demo
      slider = new JSlider( SwingConstants.HORIZONTAL, 0, 200, 10 );
      slider.setMajorTickSpacing( 10 );
      slider.setPaintTicks( true );

      slider.addChangeListener(

      new ChangeListener()
      {
         public void stateChanged( ChangeEvent event )
         {
            myP.setXY( slider.getValue(), slider.getValue() );
         }
      }

      );

      container.add( slider );


      setSize( 300, 200 );
      setVisible( true );

   }

   /**
   * @param args the command line arguments
   */

   public static void main(String[] args) {


      Main app = new Main();

      app.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

   }

}