作成 2004/9/26
キーボードからの入力を取得する最も素直な方法は、KeyListenerを利用する方法。KeyListenerはインターフェイスなので、どのクラスにimplementsしても可。
keyTypedは、文字キーが押されたときに発生するイベント。keyPressedにまとめちゃえるので、使わなくてもいい場合も多い。
キーを押しっぱなしにしとくと、リピートレートごとにkeyPressed、keyTypedのイベントがとんでくる。「キー→(自作コマンド)→フラグ」みたいにして、ループ中で一定期間ごとにフラグ判定する形にしておけばキーリピートは無視できる。
マウス入力は、MouseListener、MouseMotionListener、MouseWheelListenerを使って取得できる。
メソッド全部書くのがめんどい場合は、リスナーの空実装のアダプターもある(MouseAdapter、MouseMotionAdapter)。
setCursorメソッドで変更できる。
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
カーソルの非表示メソッドはないが、空イメージのカーソルをセットすることで代用可能らしい。
java.awt.Robot#moveTo()で移動可能。RobotってJREのクラスっぽくないなぁ。。。
ComponentのprocessKeyEvent()やprocessMouseEvent()などをオーバーライドすることで、キーやマウスのイベントをフックできる。この場合、マウスイベントを有効にしておく必要がある(キーはデフォルトでオン)。
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
また、AWTEventListenerを利用することですべてのAWTイベントをフックできる。
Toolkit.getDefaultToolkit().addAWTEventListener(new MyAWTEventListener(), -1);