0

JPopupMenu に関連する質問があり、誰かが私を助けてくれるかもしれません。

私が見る限り、JPopupMenu は、JMenu を押すと (これは JMenuBar にありますか)、または JMenu にカーソルを合わせると (JPopupMenu にある場合) 開きます。

したがって、JMenu を含む JMenuBar があります (「ファイル」と呼びましょう)。「ファイル」を押すと、JMenuItem と別の JMenu (「プロパティ」と呼びましょう) を含む JPopupMenu が開きます。ファイル JMenu にあるのと同じ動作をプロパティ JMenu に適用する方法はありますか?

これが JMenu の通常の動作を回避しようとしていることは知っていますが、これが可能かどうか考えている人はいますか?

4

1 に答える 1

1

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

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

そこで、解決策として、これらの保護されたハンドラーを独自の MyOwnBasicMenuUI および MyOwnBasicMenuItemUI 実装で拡張し、独自の動作を適用しました。これで、ユーザーがクリックしたときにのみ開き、ユーザーが別の場所をクリックするまで開いたままになる JMenu ができました。誰かが詳細を知りたい場合は、提供できます。

ありがとう

于 2012-02-01T15:44:32.660 に答える