【发布时间】:2014-08-12 02:31:46
【问题描述】:
我正在用 Java 构建一个桌面应用程序。我想获取鼠标单击相对于 JSrollPane 内图像的鼠标坐标。 JScrollPane,screenScroll,包含在带有 BorderLayout 的 JPanel 中。
final JLabel screenLabel = new JLabel(new ImageIcon(image));
JScrollPane screenScroll = new JScrollPane(screenLabel);
screenScroll.getViewport().setBackground(Color.white);
screenLabel.addMouseListener(new MouseAdapter() {
@Override //I override only one method for presentation
public void mousePressed(MouseEvent e) {
System.out.println("Y'all clicked at: "+e.getX() + ", " + e.getY()+" in the image.");
}
});
所以问题来了:JPanel 比图像大,并且 JScrollPane 占据了 JPanel 的 100%(看起来不错,我很高兴)但是 mousePressed 事件给了我相对于JScrollPane/JPanel,而不是图像,因此 x 坐标是偏移的(即使 mouseListener 已添加到包含 ImageIcon 的 JLabel)。
希望我解释清楚。如何修改上述代码以获取相对于图像的坐标?
【问题讨论】:
-
考虑提供一个runnable example 来证明您的问题。这将导致更少的混乱和更好的响应
-
谢谢你,@MadProgrammer。这个问题我觉得没必要,但是以后会考虑的。
-
所以,如果我理解正确,您正在尝试确定鼠标单击相对于实际图像 (
image) 的位置,该图像显示在JLabel? -
是的,就是这样。
-
好吧,我仍然坐在这里为你的问题挠头,如果我能复制你的问题,它会让生活(至少我的)更简单 - 只是说......
标签: java swing jscrollpane mouselistener imageicon