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