Problema arrastando retangulo

0 respostas
Evy

ola…
tenho uma duvida
tenho um codigo que me permite arrastar um retangulo em um panel. a pergunta é: Como eu faria para arrastar esse retangulo em um panel que tem uma imagem de fundo?
Queria arrastar o retangulo por cima da imagem. sabe?
Sera que alguem consegue me ajudar? Isso é muito importante :roll:
Eis o código

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

public class MouseTracker extends JPanel implements MouseListener{
    
    private int xValue = 0, yValue = 0;
    private int beginX = 0, beginY = 0;
    private int endX = 0, endY = 0;
    public int flag = 0;
    public int begin = 0;
    Rectangle rectAtual = new Rectangle();
    
    /** Creates a new instance of MouseTracker */
    public MouseTracker() 
    {
       
        addMouseListener(this);
        setSize( 300,300)
        this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
            public void mouseMoved(java.awt.event.MouseEvent evt) {
                jPanel3MouseMoved(evt);
            }
            
            public void mouseDragged(java.awt.event.MouseEvent evt) {
                jPanel3MouseDragged(evt);
            }
        });
    }
    
    
    public void mouseClicked(MouseEvent e)
    {
        xValue = e.getX();
        yValue = e.getY(); 
        System.out.println("xValue: "+xValue);
        System.out.println("yValue: "+yValue);
        flag = 2;
        begin = 1;
        repaint();

    }
    
    public void mousePressed(MouseEvent e)
    {
        beginX = e.getX();
        beginY = e.getY(); 
        System.out.println("Begin x: "+beginX);
        System.out.println("Begin y: "+beginY);
        repaint();
    }
    
    public void mouseReleased(MouseEvent e)
    {
        endX = e.getX();
        endY = e.getY();
        System.out.println("The rectangle begins here: ["+(endX - 60)+","+(endY - 70)+"]");

    }    

    public void mouseEntered(MouseEvent e)
    {
       if (begin == 0)
           flag = 1;
      /* else
           flag = 0;*/
    }    
    
    public void mouseExited(MouseEvent e)
    {
      //  statusBar.setText("Mouse outside the window");
    }    
        
    public void paint (Graphics g)
    {
        g.setColor(Color.blue);
        g.clearRect(0, 0, this.getWidth(),this.getHeight());
        if(flag > 0){
            Rectangle box = cortarRect(rectAtual);
            box.x = rectAtual.x;
            box.y = rectAtual.y;
            g.drawRect(box.x - 60, box.y - 70, box.width - 1, box.height - 1);
        }
    }  

    Rectangle cortarRect(Rectangle miRect){
        int x = miRect.x;
        int y = miRect.y;
        return new Rectangle(x, y, 120, 140);
    }
    private void jPanel3MouseMoved(MouseEvent evt) {

        rectAtual.x = evt.getX();
        rectAtual.y = evt.getY();
        if (flag == 1)
            repaint();
    }
    
    private void jPanel3MouseDragged(MouseEvent evt) {
        rectAtual.x = evt.getX();
        rectAtual.y = evt.getY();
        if (flag == 2)
            repaint();
    }
    

    
    public static void main(String[] args)
    {
    	JFrame frame=new JFrame();
    	frame.setTitle("Testando arrastar o retangulo");
    	MouseTracker panel = new MouseTracker();

    	frame.add(panel);
    	frame.setSize(450,450);
    	frame.setVisible(true);
    }    
    
}

Obrigada

Criado 5 de março de 2008
Respostas 0
Participantes 1