Разница между JPanel, JFrame, JComponent и JApplet - PullRequest
43 голосов
/ 17 августа 2010

Я делаю симулятор физики для удовольствия, и я искал учебники графики, когда пытался выяснить разницу между всеми этими J. Может кто-нибудь рассказать о них или дать ссылку на полезный источник?

Ответы [ 3 ]

41 голосов
/ 17 августа 2010

Эти классы являются общими точками расширения для конструкций пользовательского интерфейса Java. Прежде всего, осознайте, что они не обязательно имеют непосредственное отношение друг к другу, поэтому попытка найти отношения между ними может привести к обратным результатам.

JApplet - Базовый класс, который позволяет писать код, который будет работать в контексте браузера, например, для интерактивной веб-страницы. Это круто, и все, но это приносит ограничения, которые являются ценой для хорошей игры в реальном мире. Обычно JApplet используется, когда вы хотите иметь свой собственный пользовательский интерфейс на веб-странице. Я всегда удивлялся, почему люди не используют апплеты для сохранения состояния сеанса, поэтому не нужны ни база данных, ни файлы cookie.

JComponent - Базовый класс для объектов, которые намереваются взаимодействовать с Swing.

JFrame - Используется для представления материала, который должно иметь окно. Это включает в себя границы (изменяемый размер y / n?), Заголовок (имя приложения или другое сообщение), элементы управления (разрешено ли минимизировать / максимизировать?) И обработчики событий для различных системных событий, таких как «закрытие окна» (разрешить приложению еще выйти?)

JPanel - Общий класс, используемый для сбора других элементов. Это более важно при работе с визуальным макетом или одним из предоставленных менеджеров макетов, например Например, у вас есть текстовое поле, которое больше, чем зарезервированная область. Поместите текстовое поле в область прокрутки и поместите эту панель в JPanel. Затем, когда вы разместите JPanel, он будет более управляемым с точки зрения макета.

19 голосов
/ 17 августа 2010

JFrame и JApplet - контейнеры верхнего уровня.Если вы хотите создать настольное приложение, вы будете использовать JFrame, а если вы планируете разместить свое приложение в браузере, вы будете использовать JApplet.

JComponent - это абстрактный класс для всех компонентов Swing, и вы можете использовать его в качествебазовый класс для вашего нового компонента.JPanel - это простой в использовании компонент, который вы можете использовать практически для чего угодно.

Поскольку это интересный проект, самый простой способ для вас - работать с JPanel, а затем размещать его внутри JFrame или JApplet.Netbeans имеет визуальный дизайнер для Swing с простыми примерами.

5 голосов
/ 17 августа 2010

Вы можете найти полезным поиск классов на Oracle.Например:

http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JFrame.html

Там вы можете видеть, что JFrame расширяет JComponent и JContainer.

JComponent - это базовый объект, который можно нарисовать, JContainer расширяет его так, что выможете добавить компоненты к нему.JPanel и JFrame расширяют JComponent, поскольку вы можете добавлять к ним вещи.JFrame предоставляет окно, тогда как JPanel - это просто панель, которая находится внутри окна.Если это имеет смысл.

...