トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

MouseEvent.isPopupTrigger

[Java]
[プログラミング]

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をきちんと設定すると同じ動作をする?