释放鼠标后如何查找jframe窗口的位置

时间:2019-01-21 23:52:44

标签: java eclipse jframe mouselistener

我正在制作A * Pathfinder可视化文件,并且在使用GUI时遇到了麻烦。我的代码的工作方式是,一开始,在框架上放置了一层瓷砖。然后,一旦用户单击图块,它将更改颜色以表示开始或结束。我的问题是用户点击。我在弄清楚用户单击鼠标的位置时遇到了麻烦。

我已经在使用MouseInfo.getPointerInfo().getLocation().getX()MouseInfo.getPointerInfo().getLocation().getY()查找鼠标的位置。但是,我需要找到鼠标相对于窗口的位置。为此,我需要找到窗口的位置。这是我达不到的地方。我的代码可以找到窗口的位置吗?我想这样做,以便通过检测何时释放鼠标(已经有public void mouseReleased)并找到窗口的位置来使代码起作用。

public class Frame extends JFrame implements MouseListener {

int clicker = 0;

public Frame(int sizeX, int sizeY) {
    setSize(sizeX, sizeY);
    setTitle("A*Pathfinding");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setLocation(0,0);

    setUpGrid(sizeX, sizeY);

    setResizable(false);
    setVisible(true);
    addMouseListener(this);
}

private void setUpGrid(int sizeX, int sizeY) {
    getContentPane().setLayout(new GridLayout(sizeY / 50, sizeX / 50));
    int tileNum = 0;
    for (int i = 0; i < sizeX / 50; i++) {
        for (int j = 0; j < sizeY / 50; j++) {
            getContentPane().add(new Tile(i * 48 + 17, j * 48 + 6, Color.white));
            tileNum++;

        }
    }
    int[][] tileArray = new int[(int) Math.sqrt(tileNum)][(int) Math.sqrt(tileNum)];
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    new Frame(1000, 1000);
}

public void mouseClicked(MouseEvent arg0) {
    int mouseX = (int) MouseInfo.getPointerInfo().getLocation().getX();
    int mouseY = (int) MouseInfo.getPointerInfo().getLocation().getY();
    System.out.println(mouseX);
    System.out.println(mouseY);
}
public void mouseReleased(MouseEvent arg0) {
}

0 个答案:

没有答案