В чем разница между корневой панелью и контейнером верхнего уровня в Swing? - PullRequest
5 голосов
/ 17 мая 2010

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

корневая панель
панель слоев
панель содержимого
стеклянная панель

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

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

Ответы [ 2 ]

3 голосов
/ 17 мая 2010

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

RootPaneContainer http://java.sun.com/javase/7/docs/api/javax/swing/doc-files/JRootPane-1.gif От JRootPane :

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

2 голосов
/ 18 мая 2010

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

Корневая панель НЕ сам контейнер верхнего уровня, но контейнер верхнего уровня HAS корневая панель.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...