2009-10-08 59 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