问题1:屏幕坐标系和数学坐标系
屏幕坐标系和数学坐标系如下图所示
设CavasHeight 为H, 则数学坐标系中一点(x,y)和屏幕坐标系(x,H-y)
问题2:屏幕坐标系中鼠标点击位置的值包括menubar高度
鼠标点击,返回对应屏幕坐标,发现A点【左上点】坐标不是(0,0)而是(10,51)这是因为加上了上面welcome的menubar的长度,所以要将这段减去,解决方法如下 如上图所示用-(L1-L2)得到平移大小其中L2即为frame.getCanvasWidth();, 具体代码实现如下
private class AlgoMouseListener extends MouseAdapter{
public void mousePressed(MouseEvent event) {
event.translatePoint(
-(int)(frame.getBounds().width - frame.getCanvasWidth()),
-(int)(frame.getBounds().height - frame.getCanvasHeight())
);
System.out.println(event.getPoint());
}
}