Почему в контейнере слишком много слоев?

Кто-нибудь может сказать мне, в чем разница между приведенным ниже кодом

JFrame jf=new JFrame();
JButton jb=new JButton();
jf.add(jb);

а также

JFrame jf=new JFrame();
Container c=jf.getContentPane();
JButton jb=new JButton();
c.add(jb);

Даже я не ясно о RootPane,LayeredPane,GlassPane. Какая польза от RootPane?? Я никогда не использовал это в своем кодировании. Я прочитал это по ссылке ниже

http://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html

но не слишком ясно, потому что нет практической ситуации, когда я использовал вышеизложенное. Спасибо за Ваш ответ!!

2 ответа

Оба одинаковы...
Оба добавляются в объект java.awt.Container.

JFrame и Container имеют следующую иерархию
Случай 1: JFrame#add()-> Frame # add () -> Window#add() -> Container#add() // Компонент add в контейнер

Случай 2: JFrame#getContentPane() -> getRootPane(). GetContentPane(); он вернет объект-контейнер (Container # add)

Начиная с Java 5, между примерами кода нет никакой разницы. JFrame#add теперь перенаправлен на JFrame#getContentPane от вашего имени.

До Java 5 это создавало исключение, что означало, что вы должны были добавлять свои компоненты непосредственно на панель контента.

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

JRootPane сделан из слоев. Внизу находится JMenuBar и панель содержимого и выше, это стеклянная панель.

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

Стеклянная панель действует как наложение, которое может использоваться для визуализации содержимого поверх всего остального (а также для блокировки событий мыши и клавиатуры).

Взгляните на Как использовать Root Panes.

Обычно, кроме панели содержимого и стеклянной панели, вы обычно не используете другие части корневой панели.

Вы также можете взглянуть на это для быстрого примера использования стеклянной панели.

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