Каково различие между корневой областью и контейнером верхнего уровня в Swing?

Я понимаю, что каждый высокоуровневый контейнер имеет некоторые слои:

корневая область
область слоя
довольный область
стеклянная область

но я не понимаю, является ли корневая область самим высокоуровневым контейнером.

Каковы отношения между областью и контейнером? На самом деле, когда я возвращаю область с getContentPane(), объект имеет тип Container!

5
задан Pops 4 February 2011 в 19:08
поделиться

2 ответа

Если вы посмотрите на предыдущие ответы или ссылки, то увидите между строк, что на самом деле ответ на вопрос таков:

Корневая панель НЕ контейнер верхнего уровня, но контейнер верхнего уровня ИМЕЕТ корневую панель.

Поскольку все контейнеры верхнего уровня Swing (а именно, JFrame, JDialog и JApplet) реализуют интерфейс RootPaneContainer, это означает, что вы можете получить доступ к их корневой панели в общем случае (нет необходимости проверять, является ли это JFrame или JDialog. ...)

По поводу второй части вопроса, разницы между панелью и контейнером, на самом деле никакой разницы нет, панель - это java.awt.Container (или любой подкласс, в частности javax.swing.JPanel).

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

2
ответ дан 14 December 2019 в 19:05
поделиться

У вас также есть JFrame . Подробнее см. Как использовать корневые панели .

RootPaneContainer Из JRootPane :

«Тяжелые» компоненты (те, которые делегируются одноранговому узлу или собственный компонент в хост-системе) показаны более темным и тяжелым прямоугольником. Четыре тяжелых контейнера JFC / Swing (JFrame, JDialog, JWindow и JApplet) показаны по отношению к классам AWT, которые они расширяют. Эти четыре компонента - единственные тяжелые контейнеры в библиотеке Swing.

3
ответ дан 14 December 2019 в 19:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: