我试图移动一个矩形,但我不知道该怎么做,我知道它与'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)
新答案 如果您希望能够单击并拖动矩形,您只需更新矩形的x和y,并让鼠标监听器将这些值更改为鼠标在单击时的当前位置.
老答案
你的问题有点令人困惑.你提到使用
mouseClicked(MouseEvent e)它与实际移动处理单击鼠标的事件的矩形无关.如果您只想移动矩形,可以使用变量并添加到x或y.例如:
Run Code Online (Sandbox Code Playgroud)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();或者,如果单击鼠标基本上你正在使用鼠标事件,当它被点击时你只需将x和y设置为鼠标的位置.
| 归档时间: |
|
| 查看次数: |
7991 次 |
| 最近记录: |