0

ペイント部分でカーソルのポイントを取得し、単に楕円を描画しようとしています。運が悪い!

public void paint(Graphics g){
     Point ComponentPoint = PaintPanel.getLocationOnScreen();
     Point CursorPoint=   MouseInfo.getPointerInfo().getLocation(); //gets cursor point

     int ComPX =  ComponentPoint.x;
     int ComPY =  ComponentPoint.y;
     int CurPX =  CursorPoint.x;
     int CurPY =  CursorPoint.y;
     int FinalX = CurPX - ComPX;
     int FinalY =  CurPY - ComPY;
     g.drawOval(FinalX, FinalY, 20, 20);
}

private void PaintPanelMouseDragged(java.awt.event.MouseEvent evt) {                                        
    //when mouse is moved over paintpanel

    //PaintPanel.repaint();
    not working
}             

これはペイントメソッドなしの画像です:

http://i.stack.imgur.com/VOyhr.png

4

1 に答える 1

1

そのように paint メソッドにコードを追加することはできません。paint() メソッドが呼び出されるタイミングを制御できないため、paint メソッドで MouseInfo クラスを参照することはありません。カスタム ペインティングを行うには、MouseListener と MouseMotionListner を使用する必要があります。また、ペイント メソッドでカスタム ペイントを行うべきではありません。

2 つのソリューションについては、カスタム ペインティング アプローチを参照してください。

于 2013-03-24T01:05:40.637 に答える