他のクラスにある `paintcomponent()`メソッドにマウスの座標を提供できません -- java フィールド と swing フィールド と jframe フィールド と mousemotionlistener フィールド 関連 問題

Can't provide coordinates of mouse to the `paintComponent()` method located in other class












0
vote

問題

日本語

マウスが配置されている場所であれば、画像を描く(表示)単純なプログラムを作成しています。そのため、画像はマウス矢印で移動します。

これのために JFrame を作成し、 という名前のクラスで MouseMotionListener Image を追加しました。 Frame。画像は imageComponent クラスを使用して追加されています。

MouseMotionListener マウス座標を取得していますが、これらのコードの提供方法を​​理解する方法は理解できません。<コードコード> <コードのコード> y 座標> paintComponent method、マウスが移動するたびにそれを再描画する方法:

<コード> main() < MouseMotionListener0 class:

<事前> <コード> MouseMotionListener1

MouseMotionListener2 リスナーと MouseMotionListener3 をフレームに追加するクラス。

<事前> <コード> MouseMotionListener4

<コード> MouseMotionListener5 クラス。指定されたパスから画像を描画します。

<事前> <コード> x16

上記のクラスでは、 MouseMotionListener7 および<コード> MouseMotionListener8 :マウス座標を宣言しました。 これをリスナーから到着したいのですが、これを行う方法がわかりません。誰かが助けてください!

編集: MouseMotionListener9 Image0 に追加すると、このエラー:

英語

I am creating a simple program which draws(displays) my image wherever the mouse is located. So the image moves with the mouse arrow.

For this I've created a JFrame and I've added MouseMotionListener and a Imageinto it by the class named Frame. Image is added using imageComponent class.

In MouseMotionListener I'm getting the mouse coordinate but can't understand how to provide these x and y coordinates to the paintComponent method, and how to repaint it every time when mouse is moved.Here is my code:

main() method in Practice class:

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 which add listener and ImageComponent to the 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 class, which draws image from specified path:

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

In above class I've declared x and y: the mouse coordinates. Which I want to get from the listener but can't understand how to do this. Please someone help!

EDIT: if I add mouseMotionListener to imageComponent then it is giving this errors:

</div
           
   
   

回答リスト

1
 
vote
vote
ベストアンサー
 

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

Let the imageComponent add the mouse listener:

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

関連する質問

0  keypressed()メソッドはマウスプレス()後に機能しない  ( Keypressed method not working after mousepressed ) 
マウスをクリックしたときに状態を切り替えるGUIプログラムを作成し、対応するキーを押したときにバッファリダージを移動しようとしています。しかし、状態が切り替えられたとき、Keylistenerのkeylisted()メソッドが呼び出されていません。より具体的に...

0  MouseMotionListenerで画面を更新します  ( Updating screen with mousemotionlistener ) 
私の質問は、<コード> paddleOne がマウスで移動しないのですか? グラフィックが更新されていないためですか???? <事前> <コード> package ballGame; import javax.swing.*; import java.aw...

1  Javaの中央MouseMotionListener  ( A central mousemotionlistener in java ) 
私のJFrameにMouseMotionListenerを追加して、私のJFrameのすべてのオブジェクトから到着したすべてのマウスモーションメッセージを制御しましたが、私がマウスをJlayeredPaneに移動するとメッセージが作成されません。私のJFram...

0  他のクラスにある `paintcomponent()`メソッドにマウスの座標を提供できません  ( Cant provide coordinates of mouse to the paintcomponent method located in o ) 
マウスが配置されている場所であれば、画像を描く(表示)単純なプログラムを作成しています。そのため、画像はマウス矢印で移動します。 これのために JFrame を作成し、 という名前のクラスで MouseMotionListener と Image を追加しま...

-1  マウスの座標が原点Javaのように、フレームの中心を取る作ります  ( Making the mouse coordinates take the center of a frame as origin java ) 
私が作ることができますどのようにのMouseMotionListenerではなく、デフォルトの左上位置のフレームの中央に(0,0)を読み込む? ...

-1  JButtonとJFrameの両方をMouseListenersとインポートするトラブル  ( Trouble importing both jbutton and jframe with mouselisteners ) 
MouseMotionListener および<コード> MouseListener の両方を実装する必要があるペイントプログラムを作成しています。 javax.swing.JFrame および<コード> javax.swing.JButton 。 ...

0  MouseClickedイベントを設定する方法  ( How to set mouseclicked event ) 
マウスの左ボタンをクリックすると、X座標とY座標を示すプログラムを作成しようとしていますが、機能しません。プログラムを実行すると、コンソールに自動的にX座標とY座標が表示されますが、マウスクリック後の調整を見たいです。 <事前> <コード> import ja...

1  高速なMouseMovementでJava 2Dで描画します  ( Drawing in java 2d with fast mousemovement ) 
長くなるだろうので、読むことや/または答えに感謝します:) 編集:このスピーディなマウスカーソルのドラッグで繰り返し楕円の連続曲線を描く方法は?は完全には正しくない答えを持っていますが、その間の直線を描くよりも他の方法はありません。長方形または楕円形? (長...

0  MouseMotionListenerを使ったトラブル  ( Trouble using mousemotionlistener ) 
帰ってきたときに符号化し始めたばかりです。私は<コード> JPanel を使用してFruitninjaタイプのゲームを作りようとしています(ゲームをオンにするループとフルーツの残りを行うループを除く)。 /爆弾アニメーション) これまでのところ、 Apple....

0  Java JinternalFrameアプリケーションで内部パネルのサイズを正確にサイズ変更する方法  ( How to resize the internal panels bounds accurately in java jinternalframe appli ) 
JinternalFrameを使ったスイングMDIアプリケーションを開発しています、私の要件はです 内部フレームは、 内蔵フレームは、 マウスが動くとき、この内部フレームには4つのパネルがあります。 共有バインド、リサイズ可能なカーソル(EまたはN)が表示...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有