2011-09-17 39 views
2

我正在練習通過創建一個簡單的遊戲來學習Java。在我簡單的遊戲,我想用AWT圖像類,我想點擊圖片類,它會彈出類似警告對話框,如何在Java的Image類中檢測點擊事件?

public class Sample 
{ 
    Image img = getImage(getClass().getResource("0.jpg")); 

    void paint (Graphics g) 
    { 
     g.drawImage(img,30,30,this); 
    } 
} 

我想,如果我點擊的形象圖像將檢測到單擊事件,並且會顯示一個警告對話框。

回答

4

我前幾天寫了一個函數:

public boolean isBetween(float x1, float y1, float x2, float y2, float objeX, float objeY) { 
    if ((x1 <= objeX && x2 >=objeX) || (x1 >=objeX && x2<=objeX)) { 
     if ((y1 <= objeY && y2 >=objeY) || (y2 <= objeY && y1 >=objeY)) 
      return true; 
    } 
    else { 
     return false; 
    } 
} 

當你使用它,給圖像的四點意見。最後兩點是點擊點。 您必須添加一個mouselistener。當事件動作時,您使用isBetween函數檢查點擊的點。如果它返回true,您的圖像被點擊。

0

您可以創建一個具有背景圖像(所需圖像)的自定義JPanel。然後,您可以使用JPanel的功能來監聽點擊事件。定製的JPanel可能是一些像這樣(從here拍攝):

class ImagePanel extends JPanel { 

    private Image img; 

    public ImagePanel(String img) { 
     this(new ImageIcon(img).getImage()); 
    } 

    public ImagePanel(Image img) { 
     this.img = img; 
     Dimension size = new Dimension(img.getWidth(null), img.getHeight(null)); 
     setPreferredSize(size); 
     setMinimumSize(size); 
     setMaximumSize(size); 
     setSize(size); 
     setLayout(null); 
    } 

    public void paintComponent(Graphics g) { 
     g.drawImage(img, 0, 0, null); 
    } 
} 

有關事件的更多信息,你可以去看看甲骨文教程How to Write a Component Listener

+2

只需使用'ImageIcon'來創建'JLabel',它已經有'addMouseListener()'。 – trashgod

+0

對於第一個鏈接,Firefox報告「此網頁www.java2s.com已被報告爲攻擊頁面,並且已根據您的安全偏好進行阻止」。 –

+0

改爲使用'JComponent' – stryba