Swingのポップアップメニュー(JPopupMenu)についてメモ。
JTextFieldとかのテキスト入力コンポーネントなら、デフォルトで編集メニュー(コピー&ペーストのメニュー)くらい出してくれても良さそうな気がしないでもないけど、そうすると独自メニューを追加するのが面倒になるから最初から何も無いのだろうか。
まぁポップアップメニューなら右クリックイベントに対してポップアップのクラスにメニューを追加して表示するだけー、メニューの追加方法もメニューバーと大差ないからそんなに大変じゃないだろー。と思ったら。
確かにてきとーに作ってみるだけならそれほど大変でもないんだけど、ちゃんとやろうと思ったら意外と奥が深い。
ポップアップトリガーなんて知らなくても、右クリックイベントでポップアップ表示できちゃうもんなぁ。
あと、JDK1.5からコンテキストメニューキーが使えるようになっていたらしい。
そんな名前聞かされても何のことだか分からないけど、Windowsのキーボードの右下に付いている(かもしれない)、“メニューを指してるマウスカーソルの絵”が描かれているキー。アプリケーションキーとも言うらしいが。
普通のWindowsアプリなら、このキーを押した時にもポップアップメニューが出る。
そうと知ってれば、このキーも実装したくなるよな~。
とりあえず普通のキーイベント処理で実装できたけど、こいつにもマウスのポップアップトリガーみたいなメソッドがあったりするのかなぁ…。
そういえば、マウスの座標をマウスイベント以外で取るメソッドなんてあったっけ、と思ったら、JDK1.5で加わっていたらしい。
(他の方法といえば、マウスの移動イベントを常に捕捉して自分で保持しておく方法くらいしか思い付かないけど、JDK1.4ではどうしてたんだろう?)
ちなみにJDK1.5では、WindowsロゴキーもKeyEventのVK_WINDOWSとして定義されている。でもそれで何をどうしろと言うんだ^^;
さて、なんだか本来作りたい物からわき道に逸れてばかりのような感じもするけど、そろそろ本筋に戻れるかなぁ。