Hallo
.. Ich möchte ein speziellen Rechteckt ( bausteinRect ) auf ein JPanel zeichnen und denn danach mit dem Mouse verschieben können. Was mache ich falsch in meiner updateLocation()-Methode, dass sich der Rechteck nicht verschieben lässt?
Java:
public class EditPanel extends JPanel
{
private int xPos, yPos;
boolean pressOut = false;
Rectangle bausteinRect;
Color grayRect = new Color(230,227,224);
Color orangeRect = new Color(211,111,53);
public EditPanel()
{
/* ********************* Mouse Listener *************************** */
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
xPos = bausteinRect.x - e.getX();
yPos = bausteinRect.y - e.getY();
if (bausteinRect.contains(e.getX(), e.getY()))
{
updateLocation(e);
System.out.println("im Baustein");
}
else
{
pressOut = true;
System.out.println("auserhalb");
}
}
public void mouseReleased(MouseEvent e)
{
if (bausteinRect.contains(e.getX(), e.getY()))
{
updateLocation(e);
System.out.println("mouseReleased");
}
else
{
pressOut = false;
}
}
});
/* ****************** Mouse Motion Listener *********************** */
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent e)
{
if (!pressOut)
{
updateLocation(e);
}
else
{
}
}
});
}
public void updateLocation(MouseEvent e)
{
bausteinRect.setLocation(xPos + e.getX(), yPos + e.getY());
repaint();
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
//baustein
bausteinRect = new Rectangle(getX(),getY(),CreateFile.cf.bausteinW,CreateFile.cf.bausteinH);
g.setColor(orangeRect);
g.fill3DRect(bausteinRect.x, bausteinRect.y, bausteinRect.width, bausteinRect.height,true);
}
}