Я делал визуализацию 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) {
}