スクロール可能にしようとしている階層メニューをいじっています。はい、私はJava Tips WeblogでMenu Scrollerについて知っていますが、それは私が望むことを完全に行っていないので、それを取り除いたバージョンをいじっていましたが、うまく動作しません.
基本的に、ユーザーが上下の矢印キーを押してメニューをスクロールできる、表示するアイテムが多すぎるJMenuが必要です。私は自分が望むものに驚くほど近づきましたが、次のように最もよく説明できるハードルに到達しました。
ポップアップ メニューにフォーカスがあるときに [ENTER] を押すと、デフォルトの動作では、選択した項目に関連付けられたアクションが実行され、メニューが破棄されます。メニューがネストされている場合、階層内でその上にあるポップアップも閉じます (非表示になります)。この動作はどこにコーディングされていますか? JMenu、JPopupMenu、JMenuItem、AbstractButton をすべて調べましたが、探しているものがわかりません。この一般的な動作を実行する Swing のソース コードはどこにありますか?
その答えを知っていれば、実装がうまくいかない理由がわかるかもしれません。アクションは実行できますが、メニューとその親は消えません。もちろん、setVisible(false) でメニューを非表示にすることはできますが、格納階層をたどって親メニューを見つけてそれらを非表示にすることはできません。