Я делаю физический симулятор для развлечения и искал туториалы по графике, когда пытался понять разницу между всеми этими буквами J. Может ли кто-нибудь уточнить их или, возможно, предоставить ссылку на полезный источник?
Разница между JPanel, JFrame, JComponent и JApplet
Ответы (3)
Эти классы являются общими точками расширения для дизайна пользовательского интерфейса Java. Во-первых, поймите, что они не обязательно имеют прямое отношение друг к другу, поэтому попытка найти взаимосвязь между ними может быть контрпродуктивной.
JApplet — базовый класс, позволяющий писать код, который будет выполняться в контексте браузера, например, для интерактивной веб-страницы. Это круто и все такое, но это приносит ограничения, которые являются платой за хорошую игру в реальном мире. Обычно JApplet используется, когда вы хотите иметь собственный пользовательский интерфейс на веб-странице. Я всегда задавался вопросом, почему люди не используют апплеты для хранения состояния сеанса, чтобы не требовалась ни база данных, ни файлы cookie.
JComponent — базовый класс для объектов, предназначенных для взаимодействия с Swing.
JFrame — используется для представления того, что должно быть в окне. Это включает в себя границы (изменяемый размер y/n?), панель заголовка (имя приложения или другое сообщение), элементы управления (разрешено сворачивать/разворачивать?) и обработчики событий для различных системных событий, таких как «закрытие окна» (разрешить приложению выйти еще?).
JPanel — универсальный класс, используемый для объединения других элементов. Это более важно при работе с визуальным макетом или одним из предоставленных менеджеров макетов, например. gridbaglayout и т. д. Например, у вас есть текстовое поле, которое больше зарезервированной области. Поместите текстовое поле в панель прокрутки и поместите эту панель в JPanel. Затем, когда вы разместите JPanel, она будет более управляемой с точки зрения макета.
JFrame и JApplet являются контейнерами верхнего уровня. Если вы хотите создать настольное приложение, вы будете использовать JFrame, а если вы планируете разместить свое приложение в браузере, вы будете использовать JApplet.
JComponent — это абстрактный класс для всех компонентов Swing, и вы можете использовать его в качестве базового класса для вашего нового компонента. JPanel — это простой и удобный компонент, который вы можете использовать практически для чего угодно.
Так как это для забавного проекта, самый простой способ для вас — работать с JPanel, а затем размещать его внутри JFrame или JApplet. В Netbeans есть визуальный конструктор для Swing с простыми примерами.
Вам может быть полезно найти классы на веб-сайте Oracle, например:
https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JFrame.html
Там вы можете видеть, что JFrame
расширяет JComponent
и JContainer
.
JComponent
— это базовый объект, который можно рисовать. JContainer
расширяет его, чтобы вы могли добавлять к нему компоненты. JPanel
и JFrame
расширяют JComponent
, так что вы можете добавлять к ним что-то. JFrame
предоставляет окно, тогда как JPanel
— это просто панель, которая находится внутри окна.