ImageIcon 機能を使用して JLabel 内に画像を表示しています。
JLabel は JPanel 内に含まれています。
画像がクリックされたときに、画像に対するマウスの位置を取得したい。
画像を含む JLabel にマウスリスナーを追加することで、この問題を解決しようとしています。
どうやら画像の幅と高さでJLabelのサイズを設定しても、自動的にJLabelがJPanelのサイズに引き伸ばされるようです。
したがって、以下のコードを実行すると、画像のサイズが JPanel よりも小さい場合、X および Y 位置を取得すると、不要な値が返されます。
マウスの X 位置と Y 位置を取得できるように、JLabel のサイズを具体的に制限する方法はありますか?
または、画像に対するマウスの位置を取得するより良い方法はありますか? (どちらが良いでしょう)
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();