2010-05-17 2 views
5

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

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

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

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

ответ

2

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

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

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

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

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

+0

-1; 'JInternalFrame' не является контейнером верхнего уровня, [он просто воспроизводится на ТВ] (http://download.oracle.com/javase/tutorial/uiswing/components/toplevel.html). – Pops

+0

С другой стороны, поскольку это довольно вырезано-высушено, я собираюсь удалить этот бит и отменить ответ; прокомментируйте, если вы против этого. – Pops

+0

Вы правы, лорд Торгамус; Я в порядке с вашим ответом. Благодарю. – jfpoilpret

3

У вас также есть JFrame. Подробнее о How to Use Root Panes.

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.

Смежные вопросы