Почему JMenuBar находится не на панели содержимого JFrame, а на панели содержимого JToolbar

Почему JMenuBar не размещается на панели содержимого? Есть ли какая-либо причина или следствие, когда программа java gui создается, особенно при использовании jframe? Спасибо

1 ответ

Решение

Как указано в статье " Использование контейнеров верхнего уровня", панель управления управляется корневой панелью:

Каждый контейнер верхнего уровня опирается на скрытый промежуточный контейнер, называемый корневой панелью. Корневая панель управляет панелью содержимого и строкой меню, а также парой других контейнеров. Как правило, вам не нужно знать о корневых панелях, чтобы использовать компоненты Swing. Однако, если вам когда-либо понадобится перехватывать щелчки мыши или рисовать поверх нескольких компонентов, вам следует ознакомиться с корневыми панелями.

Панель меню обычно размещается в верхней части окна, поэтому, если она будет размещена на панели содержимого, менеджерам по расположению придется иметь дело с этим конкретным компонентом. Отделяя строку меню от панели содержимого, ответственность за размещение строки меню и остальных компонентов разделена. Кроме того, расположение строки меню является фиксированным, и этот компонент нельзя перетаскивать, поэтому его можно расположить не так, как остальные компоненты.

Что касается JToolBar, этот компонент можно перетаскивать, и у вас может быть несколько из них, размещая один над другим и изменяя их порядок по своему желанию. Таким образом, этот компонент полностью отличается от строки меню и имеет смысл размещать его на панели содержимого так же, как текстовое поле или другой обычный компонент.

Предлагаемые чтения:

Другие вопросы по тегам