1

我需要使用显示背景图像的 Swing 制作图像映射,然后当鼠标悬停(或单击)特定热点时,我需要弹出一个“放大”图像并显示它。

我正在考虑扩展 JPanel 以包含图像参考,并通过 paintComponent(g) 方法绘制它。到目前为止我已经完成了这部分,这是代码:

public class ImagePanel extends JPanel
{
    private static final long serialVersionUID = 1L;

    private Image image;

    public ImagePanel(Image image)
    {
        setImage(image);
    }

    public void setImage(Image newImage)
    {
        image = newImage;
    }

    @Override
    public void paintComponent(Graphics g)
    {
        Dimension size = getSize();
        g.drawImage(image, 0, 0, size.width, size.height, this);
    }

谁能推荐我如何在定义的热点上监听/响应鼠标点击?有人可以另外推荐一种显示弹出窗口的方法吗?我的直觉反应是扩展JPopupMenu让它显示图像,类似于上面的代码。

谢谢你的帮助!

4

2 回答 2

2

要监听鼠标点击,请实现MouseListener接口,并将其添加到您的面板中。然后,当收到点击时,您可以按照您的建议使用 JPopupMenu,或者您甚至可以使用玻璃窗格来显示放大的图像。

我猜你想实现与 Joshua Marinacci 的这篇文章类似的东西,他也在这里发布了源代码,我会看看。

于 2009-10-08T14:09:06.840 回答
2

我可能会:

  • 创建一些代表每个热点的 Shape 实例(可以是一个普通的无聊的旧矩形,或者如果您需要创建花哨的形状,请参阅 GeneralPath)
  • 注册一个 MouseListener,它遍历每个 Shapes 并调用其 contains() 方法以查看单击的坐标是否在相关热点内
于 2009-10-08T15:09:09.577 回答