描いた図形(今の場合は長方形)をドラッグして移動させるプログラムを作りたいのですが、うまくいきません…
アドバイスどうかよろしくお願いします。
あと、どうすればマウスイベントを使ったプログラム作成が苦手じゃなくなるのでしょうか。
重ねてアドバイスお願い致します。
以下が私が作ったプログラムです。
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){}
}
No.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();
}
}
ご回答ありがとうございます。
ご指摘の箇所を直したらあっさり上手くいきました。
数時間格闘していたことが…質問をしたことが…凄く恥ずかしいです(苦笑
こんなありがちな間違いにお付き合いさせて、本当に申し訳ありませんでした。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GetDIBits関数の使い方について
-
ボタンのイベントで異なるウィ...
-
C#で、あるクラスのメンバーす...
-
デスクトップマスコットのドラ...
-
大量のデータを読み込んで表示...
-
ピクチャボックスのクリックイ...
-
C# 親フォームで指定した値を...
-
C#でキーイベントが発生しない...
-
Junitテストでvoid戻り値メッソ...
-
C#で別のFormへ複数の値を返そ...
-
C# DataGridView列カスタマイズ
-
appletの画像が表示されない
-
Processingでマウスクリックで...
-
Java 他クラスの呼び出しが上手...
-
staticな有効範囲の配列の作り...
-
なぜエラーになるのかがわかり...
-
C# WinForm のDataGridView Cel...
-
javaのrepaint()について
-
長方形を描いて、それを移動さ...
-
Javaでパラパラアニメを作成す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
C#で、あるクラスのメンバーす...
-
Junitテストでvoid戻り値メッソ...
-
C#でのWNetAddConnection3の使...
-
Processingでマウスクリックで...
-
ボタンの複数割り当てについて
-
エンターキーを押すとOKボタン...
-
C# 矢印キーの取得
-
C# visibleプロパティをfalseに...
-
Thread.sleepのInterruptedExce...
-
C# DataGridView列カスタマイズ
-
C#でキーイベントが発生しない...
-
LVM_SETITEMSTATEでListViewの...
-
[C#.net]スレッド化された別フ...
-
GetDIBits関数の使い方について
-
C# 半角カナの文字化けについて
-
C# 親フォームで指定した値を...
-
javaアプレット repaintのタイ...
-
デスクトップマスコットのドラ...
-
C#で別のFormへ複数の値を返そ...
おすすめ情報