2011-09-17 2 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; 
    } 
} 

の画像の4ポイントを与えます。最後の2つのポイントはクリックされたポイントです。 mouselistenerを追加する必要があります。イベントアクション時に、isBetween関数でクリックされた点をチェックします。 trueを返すと、画像がクリックされたことになります。

8

JLabelに画像を表示する場合は、Icon/ImageIconを探してください。次に、JLabelの場合は、マウスクリックを聞くために、MouseListenerから適切なメソッドを追加して上書きするだけで済みます。

+0

+1非常に簡単です! – trashgod

+0

+1これは行く方法です。 –

0

背景イメージ(必要なイメージ)を持つカスタムJPanelを作成することができます。その後、JPanelの機能を使用してクリックイベントをリスンすることができます。

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); 
    } 
} 

は、イベントの詳細については、OracleのチュートリアルHow to Write a Component Listenerを見てみることができます:カスタムJPanelのは、そう(hereから取られた)のようなものである可能性があります。

+2

'ImageIcon'を使って' JLabel'を作成してください。すでに 'addMouseListener()'があります。 – trashgod

+0

最初のリンクでは、Firefoxの "このWebページはwww.java2s.comで攻撃ページとして報告されており、セキュリティ設定に基づいてブロックされています。" –

+0

代わりに 'JComponent'を使用してください – stryba

関連する問題