アプリ版:「スタンプのみでお礼する」機能のリリースについて

描いた図形(今の場合は長方形)をドラッグして移動させるプログラムを作りたいのですが、うまくいきません…
アドバイスどうかよろしくお願いします。
あと、どうすればマウスイベントを使ったプログラム作成が苦手じゃなくなるのでしょうか。
重ねてアドバイスお願い致します。

以下が私が作ったプログラムです。

import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class RectMove extends Applet implements MouseListener, MouseMotionListener{
Rectangle r1 = new Rectangle(10, 10, 50, 40);
Point p1,p2;

public void init(){
addMouseListener(this);
addMouseMotionListener(this);
}

public void paint(Graphics g){
g.drawRect(r1.x, r1.y, r1.width, r1.height);
}

public void mousePressed(MouseEvent e){
p1 = e.getPoint();
if(!r1.contains(p1))
p1 = null;
}

public void mouseReleased(MouseEvent e){
if(p1 != null){
p2 = e.getPoint();
r1.translate((p2.x - p1.x), (p2.y - p1.y));
p1 = null;
repaint();
}
}

public void mouseClicked(MouseEvent e){
p1 = null;
repaint();
}

public void mouseDragged(MouseEvent e){
if(p1 != null){
p2 = e.getPoint();
r1.translate((p2.x - p1.x), (p2.y - p1.x));
p1.setLocation(p2);
repaint();
}
}

public void mouseMoved(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
}

A 回答 (1件)

public void mouseDragged(MouseEvent e){


if(p1 != null){
p2 = e.getPoint();
r1.translate((p2.x - p1.x), (p2.y - p1.x)); /* y座標の指定が明らかに変 */
p1.setLocation(p2);
repaint();
}
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ご指摘の箇所を直したらあっさり上手くいきました。
数時間格闘していたことが…質問をしたことが…凄く恥ずかしいです(苦笑
こんなありがちな間違いにお付き合いさせて、本当に申し訳ありませんでした。
本当にありがとうございました。

お礼日時:2007/06/07 01:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!