• 締切済み

【アプレット】マウスイベントについて

【アプレット】マウスイベントについて 現在、マウスに円をリンクさせています 1回左クリックするとその場所で円が停止し、もう1回左クリックするとまた動きだし、もう1回左クリックするとその場所で円が停止し、・・・の繰り返しを行いたいです なにかアドバイスをください。 作ってるのに近いプログラム ↓ import java.applet.* ; import java.awt.*; import java.awt.event.*; public class test extends Applet { int posX = 50; int posY = 50; public void paint(Graphics g) { g.setColor(Color.red); g.fillOval(posX, posY, 50, 50); } public void mousePressed( MouseEvent e ){ x = e.getX(); y = e.getY(); repaint(); } public void init () { this.setSize(200, 200); this.setVisible(true); addMouseMotionListener(new MouseMotionAdapter() { public void mouseMoved(MouseEvent e) { posX = e.getX(); posY = e.getY(); repaint(); } public void mousePressed( MouseEvent e ){ x = e.getX(); y = e.getY(); repaint(); } public void mouseReleased(MouseEvent e){ } public void mouseClicked(MouseEvent e){ } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } }); } }

みんなの回答

回答No.2

No.6167264見て来ました。 アカウントを複数持った人がいるみたいですね。 Applet、雪だるま等々。 Windowをリサイズした場合がどうとか、 スーパークラスの参照がどうとかもそうなんですかね? salsberryさんお疲れ様です。 言葉で説明せずにソースを書いちゃえばいいんじゃないでしょうか? import java.applet.* ; import java.awt.*; import java.awt.event.*; public class test extends Applet { int posX = 50; int posY = 50; private boolean isStop = false; public void paint(Graphics g){ g.setColor(Color.red); g.fillOval(posX, posY, 50, 50); } public void init(){ this.setSize(200, 200); this.setVisible(true); addMouseMotionListener(new MouseMotionAdapter(){ public void mouseMoved(MouseEvent e) { if(!isStop){ posX = e.getX(); posY = e.getY(); repaint(); } } }); addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e){ if(isStop){ isStop = false; } else{ isStop = true; } } }); } }

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

- 停止状態かそうでないかを示すフラグを用意する。初期値は「停止状態ではない」。 - フラグが「停止状態」のときはマウスカーソルが移動してもposX 、posYの値を変更しないようにする。 - マウスボタンがクリックされたらフラグの値(停止状態/停止状態ではない)を反転させる。 ところで、QNo.6167264の件は解決したのでしょうか。

関連するQ&A

専門家に質問してみよう