如何在Java中移动矩形?

Mik*_*olo 2 java applet awt

我试图移动一个矩形,但我不知道该怎么做,我知道它与'mouseClicked(MouseEvent e)`有关,但不知道如何使用它.这是我到目前为止的代码:

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

public class MovRect extends Applet implements MouseMotionListener, MouseListener {
Color color = Color.green;
int x=30,y=30,w=150,l=150;
String MouseMotion ="";

public void init()
{
    addMouseListener(this);
    addMouseMotionListener(this);
}
public void paint(Graphics g)
{
    super.paint(g);

    g.setColor(color);
    g.drawRect(x, y, w, l);

}
public void mouseClicked(MouseEvent e)
{
    String clickDesc;
    if (e.getClickCount() == 2)
        clickDesc = "double";
    else
        clickDesc = "single";

    System.out.println("Mouse was " + clickDesc + "-clicked at location (" +
        e.getX() + ", " + e.getY() + ")");

        int mouseX = e.getX();
        int mouseY = e.getY();

    if( mouseX >= x && mouseX <= x+w && mouseY >= y && mouseY <= y+l )
    {

    }
    else
    {

    }
        this.repaint();
}

public void mouseDragged(MouseEvent e)
{
    System.out.println("mouse is being dragged at location (" + e.getX() + ", " +      e.getY() + ")");
    MouseMotion ="mouseDragged";
    repaint();
}
public void mouseMoved(MouseEvent e)
{
    System.out.println("mouse is being moved at location (" + e.getX() + ", " + e.getY() + ")");
    MouseMotion ="mouseMoved";
    repaint();
}


public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
 }
Run Code Online (Sandbox Code Playgroud)

Com*_*cus 5

新答案 如果您希望能够单击并拖动矩形,您只需更新矩形的x和y,并让鼠标监听器将这些值更改为鼠标在单击时的当前位置.

老答案

你的问题有点令人困惑.你提到使用 mouseClicked(MouseEvent e)它与实际移动处理单击鼠标的事件的矩形无关.

如果您只想移动矩形,可以使用变量并添加到x或y.例如:

int x = 100;
int y = 100;    
g.fillRect(x,y,100,100);
Run Code Online (Sandbox Code Playgroud)

然后在你的公共无效运行中你可以做到:

      try
      {
        Thread.sleep(100);
      }catch(Exception e)
      {
      }
      x = x + 2;
      y = y +2;
      repaint();
Run Code Online (Sandbox Code Playgroud)

或者,如果单击鼠标基本上你正在使用鼠标事件,当它被点击时你只需将x和y设置为鼠标的位置.