MouseEvent.isPopupTrigger
javaでGUI開発をしているとき、PopUpをだすには、MouseListnerインターフェースで規定されている、一連のメソッドを利用するのが便利です。このとき引数のMouseEventをつかって、座標などを読みとるのですが、その一つに、isPopupTrigger()というのがあります。簡単にいうと右クリックかどうか、ということなのですが、この判定がLinux版(FreeBSD上のエミュレータでのみ確認)とWindows版のJ2SDKで異っており、
- Linux版
- トリガとなるボタンが押された時に、この関数がtrueになる
- Windows版
- トリガとなるボタンが離された時に、この関数がtrueになる
したがって、両OSで動作させたい場合には(というかJavaで書く理由の一つなのだが、)同じルーチンを
public void mousePressed(MouseEvent e){ ほげほげ; }
public void mouseReleased(MouseEvent e){ ほげほげ; }
と書かないと動いてくれません。うーん。press時とreleas時で異る挙動させたかったのに。たしかによく観察してみるとWindowsの他のポップアップもマウスのボタンを離した時にあがってくるようです。どっちが良いインターフェースなのかは分かりませんが...
もしかして、UIをきちんと設定すると同じ動作をする?