2012-01-30 6 views
0

JPopupMenuに関連する質問があります。ポップアップメニューはマウスでクリックするだけで開くSwing

私が見る限り、JMenu(これはJMenuBarにあります)を押すか、JMenu(JPopupMenuにある場合)の上にマウスを置くと、JPopupMenuが開きます。

私はJMenuを含むJMenuBarを持っています(これを 'File'と呼ぶ)。 'File'を押すとJPopupMenuが開き、JMenuItemと別のJMenu(「Properties」と呼ばせてください)が入ります。 私は ファイルJMenuにあるのと同じ動作をプロパティJMenuに適用する方法はありますか?ユーザーがそれをクリックしてその上にマウスを移動していないときにのみJPopupを開きますか?

これはJMenuの通常の動作を回避しようとしていることを知っていますが、これが可能なら誰でも考えがありますか?

答えて

1

これは非常に具体的なものであり、これを行う多くの人がいるかどうかはわかりません。 :) とにかく、誰かがそれを必要とする場合に備えて、私はこれに対する解決策を残す。

まず、これらの変更がUIクラスで行われることに注意してください。 BasicMenuItemUIとBasicMenuUIの両方に、マウスイベントを処理する内部クラスHandlerがあります。 BasicMenuUIの内部クラスHandlerは、BasicMenuItemUIの内部クラスHandlerを拡張します。プライベートクラスと匿名クラスはそれぞれコードを変更することが難しいためです。 しかし、どちらの場合も、前の段落で説明したハンドラを指す保護されたハンドラがあります。

解決策として、私は自分のMyOwnBasicMenuUIとMyOwnBasicMenuItemUIの実装でこれらの保護されたハンドラを拡張し、私自身の動作を適用しました。 これで、ユーザーがクリックしたときにのみ開くJMenuがあり、ユーザーが別の場所をクリックするまで開いています。 詳細が必要な人は、私が提供することができます。

ありがとうございました

+0

[SSCCE](http://sscce.org/)を提供できますか?私は同じことをしたいと思います。ありがとうございました。 –

関連する問題