2010-08-16 2 views
39

im, создающая физический симулятор для удовольствия, и я искал графические пособия, когда я пытался выяснить разницу между всеми этими J. может кто-то уточнить их или, возможно, предоставить ссылку на полезный источник?Разница между JPanel, JFrame, JComponent и JApplet

ответ

5

Возможно, вам будет полезно найти классы в 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 - это просто панель, которая входит в окно. Если это имеет смысл.

+3

В качестве побочного примечания цепочка наследования смехотворна с некоторыми компонентами Swing. Это, как правило, делает завершение кода в IDE бесполезным, а также помехи javadocs. Им действительно нужно переписать эту вещь – TheLQ

+1

Я хотел бы указать, что JFrame не расширяет JComponent или JContainer, а скорее java.awt.Container и java.awt.Component в этом порядке. –

+1

@LucasMorgan Они, должно быть, сделали JFrame менее зависимым от Swing, чем я думал. Поскольку он использует AWT, мне интересно, можете ли вы использовать JFrame в JApplet. –

17

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

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

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

38

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

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

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

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

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

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