Javaアップレットについてです。長方形の内部でドラッグすることで、長方形を移動できるプログラ厶を作りたいのですが、うまくいきません。どうしても分からないので、改善点がありましたらアドバイスをお願いします。 詳しい仕様は、 ・長方形の内部でマウスボタンを押し、マウスボタンを押したままマウスを移動すると、移動した量だけ長方形を移動して表示する。 ・マウスボタンを離すと、その位置に長方形を描く。 ・長方形を持ち上げている感じを出すために、マウスボタンを押したときとドラッグ中は、長方形を正確な位置から少しずらして表示し、その下に影を描く。 です。 プログラ厶は以下のとおり import java.awt.*; import java.applet.*; import java.awt.event.*; public class ex1118 extends Applet implements MouseListener, MouseMotionListener{ //長方形の最初の位置 Rectangle r1 = new Rectangle(80,100,80,60); //マウスボタンを押した位置 Point p1; //マウスボタンを離した位置 Point p2; //長方形の内部にあるかどうか boolean enter = false; public void init(){ addMouseListener(this); addMouseMotionListener(this); } public void paint(Graphics g){ g.fillRect(r1.x, r1.y, r1.width, r1.height); if(enter){ //影をつける g.setColor(Color.gray); g.fillRect(p1.x, p1.y, r1.width, r1.height); //少しずらす g.setColor(Color.black); g.fillRect(p1.x - 10, p1.y - 10, r1.width, r1.height); } else if(!enter){ r1.x = r1.x + (p2.x - p1.x); r1.y = r1.y + (p2.y - p1.y); g.fillRect(r1.x, r1.y, r1.width, r1.height); } } public void mousePressed(MouseEvent e){ enter = r1.contains(e.getPoint()); if(enter) p1 = e.getPoint(); p2 = null; repaint(); } public void mouseDragged(MouseEvent e){ if(enter) p2 = e.getPoint(); repaint(); } public void mouseReleased(MouseEvent e){ enter = false; p2 = e.getPoint(); repaint(); } public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseMoved(MouseEvent e){} }
↧