Я пытаюсь создать редактор карт для 2D-ролевой игры, и то, что я сейчас пытаюсь сделать (разместить плитки на земле), состоит в том, чтобы иметь JScrollPane с JLabel (в котором есть изображение) и прикрепленный прослушиватель мыши в JScrollPane, чтобы определить положение X и Y изображения. Проблема, с которой я сталкиваюсь, заключается в том, что он получает не расположение изображений X и Y, а расположение JScrollPanes X и Y.
Итак, у меня есть JScrollPane, прикрепленный к изображению размером 512x4928, я прикрепил к нему прослушиватель мыши. проблема возникает, когда я пытаюсь получить местоположение Y, поскольку JScrollPane является отдельным объектом, он получает X и Y размера JScrollPane. Размер JScrollPanes составляет 512x600, независимо от того, где находится изображение, он никогда не вернет значение больше, чем 600.
Как я могу заставить это работать?
Вот код
public void loadMapTileImage(){
try {
image = ImageIO.read(getClass().getResource("data/misc/tiledata.png"));
image = image.getSubimage(0, 0, 512, 4928);
} catch (IOException e) {
e.printStackTrace();
}
ImageIcon i = new ImageIcon(image);
MapEditorGlobalObjects.mapTileScroll = new JScrollPane(new JLabel(i));
}
mapTileScroller.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent arg0) {
MapEditorGlobalObjects.checkIfDebugging("Mouse Released Location X = "+arg0.getX());
MapEditorGlobalObjects.checkIfDebugging("Mouse Released Location Y = "+arg0.getY());
}
@Override
public void mousePressed(MouseEvent arg0) {
MapEditorGlobalObjects.checkIfDebugging("Mouse Clicked Location X = "+arg0.getX());
MapEditorGlobalObjects.checkIfDebugging("Mouse Clicked Location Y = "+arg0.getY());
}