Нет, не всегда. Простой графический пользовательский интерфейс может быть реализован путем простого добавления компонентов «непосредственно» в JFrame. Но для большей гибкости вы всегда будете использовать JPanels. Например, чтобы использовать разные макеты в разных частях GUI, чтобы сгруппировать определенные компоненты вместе, и т. Д. c.
JFrame поддерживается JRootPane
, часть которого является contentPane
.
(image from Oracle Javado c)
Когда вы добавляете компоненты в JFrame, вы действительно добавляете их на панель содержимого, например: frame.getContentPane().add(Component)
.
JFrame - это обычная начальная сцена приложения Swing GUI, тогда как JPanel предназначена для размещения в другой сцене (контейнере). Поскольку и панель содержимого, и JPanel наследуются от одного и того же класса ( Контейнер ), вы можете использовать их аналогичным образом, что касается добавления к ним компонентов.