1

次のコードを使用して、JPanel に BufferedImage を描画しました。

protected void paintComponent(Graphics g) {
    if (image != null) {
        super.paintComponent(g);

        Graphics2D g2 = (Graphics2D) g;

        double x = (getWidth() - scale * imageWidth) / 2;
        double y = (getHeight() - scale * imageHeight) / 2;
        AffineTransform at = AffineTransform.getTranslateInstance(x, y);
        at.scale(scale, scale);
        g2.drawRenderedImage(image, at);
    }
}

その画像にマウスクリックリスナーを追加するにはどうすればよいですか? さらに、JPanel ではなく、画像のクリック座標を取得したいと考えています。

4

1 に答える 1

5

MouseListener通常どおり、ペインに a を追加します。

mouseClickedメソッドチェックで、が画像の長方形内にあるかどうかを確認しますPoint...

public void mouseClicked(MouseEvent evt) {

    if (image != null) {
        double width = scale * imageWidth;
        double height = scale * imageHeight;
        double x = (getWidth() - width) / 2;
        double y = (getHeight() - height) / 2;
        Rectangle2D.Double bounds = new Rectangle2D.Double(x, y, width, height);
        if (bounds.contains(evt.getPoint()) {
          // You clicked me...
        }
    }
}
于 2012-10-15T10:35:03.670 に答える