我使用 ImageIcon 功能在 JLabel 中显示了一个图像。
JLabel 包含在 JPanel 中。
单击图像时,我想获取鼠标相对于图像的位置。
我试图通过将鼠标侦听器添加到包含图像的 JLabel 来解决这个问题。
显然,即使我将JLabel的大小设置为图像的宽度和高度,似乎JLabel会自动拉伸到JPanel的大小。
因此,当下面的代码运行时,如果图像的大小小于 JPanel,则获取 X 和 Y 位置会返回不需要的值。
有没有一种方法可以专门限制 JLabel 的大小,以便获取鼠标的 X 位置和 Y 位置可以正常工作?
或者更好的方法来获得相对于图像的鼠标位置?(这会更好)
ImageIcon icon = new ImageIcon(image);
JLabel imageLabel = new JLabel(icon);
imageLabel.setSize(image.getWidth(null), image.getHeight(null));
imageLabel.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(imageLabel, e.getX()+" "+e.getY());
}
});
imageLabel.validate();
panel.add(imageLabel);
panel.validate();