TITLE:JFrameの外にあるMouseの位置を取得する
#navi(../)
*JFrameの外にあるMouseの位置を取得する [#pec7a075]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2007-10-29~
更新日:&lastmod;

#contents

**概要 [#vaf313cf]
JFrameの外にあるMouseの絶対位置を取得して、パネル内のラケットを移動します。

#screenshot

**サンプルコード [#o397b7d8]
#code{{
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();
}
}}
-&jnlp;
-&jar;
-&zip;

**解説 [#z2793b7a]
上記のサンプルでは、以下の手順でラケットを動かしています。
+ 10ミリ秒ごとにMouseInfoからPointerInfoを取得
+ PointerInfoから画面上でのポインタ座標を取得
+ SwingUtilities.convertPointFromScreenメソッドで、パネル相対のポインタ座標に変換
+ ラケットに変換した座標を与えて、repaint

**参考リンク [#ia57502a]
-[[J2SE 5.0 Tiger 虎の穴 マウスの位置>http://www.javainthebox.net/laboratory/J2SE1.5/GUI/MouseLocation/MouseLocation.html]]
-[[ラケットを動かす - Javaでゲーム作りますが何か?>http://javagame.main.jp/index.php?%A5%E9%A5%B1%A5%C3%A5%C8%A4%F2%C6%B0%A4%AB%A4%B9]]

**コメント [#h33780ab]
#comment