我通过实现Java Swing Scrollable接口查看JPEG图像有一个奇怪的问题。
我的代码允许我使用鼠标左键在图像顶部绘制一个矩形。 如果我不触摸滚动条,一切正常。
但是只要我向下滚动,就会在不同的位置绘制一个矩形。基本上,如果我移动自上而下的滚动条,图像将使用错误的y坐标绘制。如果向左右滚动,则会使用错误的x坐标绘制图像。这些x,y坐标重新表示左上角的点(x,y)以开始绘制矩形。
因此在向下滚动并左键单击图像以绘制矩形后,y坐标关闭。下面是我添加到其中一个包含图像内容的面板的事件。
public void mousePressed(MouseEvent m) {
if (SwingUtilities.isLeftMouseButton(m)) {
....
int y = m.getY(); //This y-coordinate is off whenever I scroll down the image.
...
}
}
任何人都有任何可能出现问题的线索?我的意思是我从MouseEvent获得y坐标,所以我希望它具有正确的值。
感谢。
答案 0 :(得分:1)
您期望获得什么样的坐标?这些值对我有意义:当你向下滚动时,即使你点击屏幕上的相同位置,y坐标也会增加。
滚动窗格中的组件对滚动窗格一无所知。因此,当发生单击时,如果组件足够大以至于完全可见,y坐标将匹配单击的位置。
如果你想转换成滚动窗格的坐标系,我猜你可以这样做:
public void mouseClicked( MouseEvent e )
{
Point p = SwingUtilities.convertPoint( label, e.getX(), e.getY(), scrollPane );
System.out.println( "Converted: " + p.x + ", " + p.y );
}
(编辑:只是一个注释,上面的代码假设label
是显示图像的组件)