Я возился с иерархическим меню, пытаясь сделать его прокручиваемым. Да, я знаю о Menu Scroller в блоге Java Tips Weblog, но он не совсем делает то, что я хочу, поэтому я возился с его урезанной версией, и я не совсем заставляю его работать.
В основном я хочу, чтобы JMenu отображал слишком много элементов, на которых пользователь может нажимать клавиши со стрелками вверх и вниз для прокрутки меню. Я был мучительно близок к тому, чего хочу, но наткнулся на препятствие, которое лучше всего можно описать так:
Когда [ENTER] нажимается, когда всплывающее меню находится в фокусе, поведение по умолчанию — выполнение действия, связанного с выбранным элементом, и удаление меню. Если меню вложенное, всплывающие окна над ним в иерархии также закрываются (становятся невидимыми). Где закодировано это поведение? Я просмотрел все JMenu, JPopupMenu, JMenuItem, AbstractButton и не вижу того, что ищу. Где находится исходный код Swing, который выполняет это обычное поведение?
Если бы я знал ответ на этот вопрос, я мог бы понять, почему моя реализация не работает. Я могу выполнить действие, но меню и его родители не исчезнут. Конечно, я могу заставить меню исчезнуть с помощью setVisible(false), но я не могу пройтись по иерархии сдерживания, чтобы найти родительские меню и заставить ИХ исчезнуть.