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
);
}
}
|