2016-05-30 8 views
0

私が描く簡単なプログラム(ディスプレイ)マウスが配置されているところはどこでも私のイメージを作成していますに位置 `paintComponent()`メソッドにマウスの座標を提供することはできません。したがって、画像はマウスの矢印で移動します。は、他のクラス

私はJFrameを作成しました。これにFrameというクラスでMouseMotionListenerImageを追加しました。画像はimageComponentクラスを使用して追加されます。

私はマウスの座標を取得していますが、 paintComponent方法にこれら xy座標を提供する方法を理解することはできませんし、どのようにそれを再描画するには、マウスがmoved.Hereあるたびに私のコードです MouseMotionListener

main()Practiceクラスのメソッド:フレームにリスナーとImageComponentを追加

public class Practice { 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable(){ 
     public void run(){ 
      JFrame frame = new Frame(); 
      frame.setSize(500,500); 
      frame.setVisible(true); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     } 
    }); 

} 
} 

Frameクラス。指定されたパスから画像を描画

class Frame extends JFrame{ 
Frame(){ 
    add(new imageComponent()); 
    addMouseMotionListener(new MouseAdapter(){ 
     public void mouseMoved(MouseEvent me){ 
      int x = me.getX(); 
      int y = me.getY(); 
      repaint(); 
     } 
    }); 

} 
} 

imageComponentクラス、上記クラスIにおいてxyを宣言した

class imageComponent extends JComponent{ 
Image img; 
int x,y; 
imageComponent(){ 
    img = new ImageIcon("C:\\Users\\Kaushal28\\Desktop\\image.png").getImage();  
} 

public void paint(Graphics g){ 
    g.drawImage(img, x, y, null); 
} 
} 

:マウス座標。私は、リスナーから取得したいが、これを行う方法を理解することはできません 。助けてください!

EDIT: 私はそれはthisエラー与えているimageComponentmouseMotionListenerを追加した場合:

+0

用心を、マウスの座標がどのコンポーネントに対して相対的 – MadProgrammer

+0

を作成しました。おかげ – MadProgrammer

+0

は大丈夫、私は理解MadProgrammer @(http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html)[マウスリスナーを書く方法]それら –

答えて

1

imageComponentは、マウスリスナーを追加してみましょう:

class imageComponent extends JComponent { 

    Image img; 
    int x, y; 
    imageComponent() { 
     addMouseMotionListener(new MouseAdapter() { 
      public void mouseMoved(MouseEvent me) { 
       x = me.getX(); 
       y = me.getY(); 
       repaint(); 
      } 
     }); 
     img = new ImageIcon(/* path to image */).getImage(); 
    } 

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

そのが動作していない...編集を参照してください。 –

+0

申し訳ありませんが、コンストラクタ内addMouseMotionListener(、..)を追加します。 –

関連する問題