获取鼠标单击的坐标

Get coordinates of one mouse click

我正在使用 Sedgewick 和 Wayne 的 this class,我需要在标准绘图 window 上按下鼠标时从鼠标单击中获取坐标。这个 class 有一个方法 boolean mousePressed 来识别鼠标何时被按下,我们可以在鼠标被按下时从一个点获取坐标。我试图修改 java 代码来为鼠标点击做类似的事情:

public static boolean mouseClicked() {
    synchronized (mouseLock) {
        return mouseClicked;
    }
}

。 . .

  public void mouseClicked(MouseEvent e) {
     synchronized (mouseLock) {
         mouseX = StdDraw.userX(e.getX());
         mouseY = StdDraw.userY(e.getY());
         mouseClicked = true;
     }
}

...

 public void mouseReleased(MouseEvent e) {
    synchronized (mouseLock) {
        mousePressed = false;
        mouseClicked = false;
    }
}

如果我运行下面的程序

public class test {

public static void main(String[] args) {
    while(true){
        if (StdDraw.mouseClicked()) {
            System.out.println("hello");
        }
    }
}

}

它一直在打印 hello(所以这意味着 mouseClicked 正在返回 true。我怎样才能让它停止?我已经尝试在 released 事件上设置 mouseClicked=false,但是没有用。我做错了什么?首先,我试过用mousePressed来取点,但是我不能用它来取两点。

谢谢!

您必须在打印值后将 mouseClicked 标志设置为 false

while (true) {
        if (StdDraw.mouseClicked()) {
            System.out.println("hello");
            StdDraw.mouseClicked=false;
        }
    }