2009-10-08 65 views
0

我需要使用显示背景图像的Swing制作图像地图,然后当鼠标悬停(或点击)特定热点时,我需要弹出一个“放大”图像并显示它。如何使用Java 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让它显示一个图像,类似于上面的代码。

感谢您的帮助!

回答

2

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

我猜你想要达到类似于这个由约书亚Marinacci post,他也发布了来源here,我会看看那个。

+0

很酷,谢谢! – Cuga 2009-10-08 14:34:17

2

我可能会:

  • 创建形状的一些实例,表示每个热点的(可能是平淡乏味的老矩形,或看到的GeneralPath如果你需要创建奇特的形状)
  • 寄存器MouseListener遍历每个Shapes并调用其contains()方法来查看点击的坐标是否在所涉热点内部
+0

我想这样做,但是我没有提到的一点是,热点在图像中可以是任意的。所以解决这个问题的方法可能是叠加子图像,但我不确定是否要这样做。 – Cuga 2009-10-08 17:00:15