TITLE:Screen上にあるMouseの位置を取得する

Posted by at 2007-10-29

Screen上にあるMouseの位置を取得する

`Screen上にあるMouse`の絶対位置を取得して、パネル内のラケットを移動します。

  • &jar;
  • &zip;
MouseInfo.png

サンプルコード

public static final Dimension panelDim = new Dimension(320, 240);
private final Racket racket = new Racket(panelDim);
public MainPanel() {
  super(new BorderLayout());
  setPreferredSize(panelDim);
  new javax.swing.Timer(10, this).start();
}
@Override public void paintComponent(Graphics g) {
  super.paintComponent(g);
  racket.draw(g);
}
@Override public void actionPerformed(ActionEvent e) {
  PointerInfo pi = MouseInfo.getPointerInfo();
  Point pt = pi.getLocation();
  SwingUtilities.convertPointFromScreen(pt, this);
  racket.move(pt.x);
  repaint();
}
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、以下の手順でラケットを動かしています。

  1. `10ミリ秒ごとにMouseInfoからPointerInfo`を取得
  2. `PointerInfo`から画面上でのポインタ座標を取得
  3. `SwingUtilities.convertPointFromScreen`メソッドで、これをパネル相対のポインタ座標に変換
  4. ラケットに変換した座標を与えて、`repaint`

参考リンク

コメント

  • スクリーンショットの間違いを修正。 -- aterai