Те, що ви зазвичай називаєте «вікном», Java називає «фреймом». Фрейм — це контейнерний об’єкт, тому в ньому можна розмістити компоненти GUI. Як і всі програмні об’єкти, фреймовий об’єкт насправді є розділом основної пам’яті, який містить інформацію та методи.
Тег <frameset> — це тег-контейнер для всіх інших тегів, які використовуються для створення фреймів. Тег <frameset> замінює тег <body> у документах frameset. Тег <frameset> визначає, як розділити вікно на фрейми. Кожен набір фреймів визначає набір рядків або стовпців.
Фрейм зазвичай використовується як простір для «охоплення всіх», тоді як контейнер має тему або більш конкретне призначення.
Як ми вже згадували раніше, Swing надає три загалом корисні класи контейнерів верхнього рівня: JFrame, JDialog і JApplet.
Контейнер є підклас Component, який може містити інші компоненти, включаючи інші контейнери. Контейнер дозволяє створювати групи об’єктів на екрані.
Деякі теги називаються неконтейнерними тегами, оскільки вони не містять жодного змісту – вони стоять окремо. Прикладами є зображення та розриви рядків. XHTML є більш суворим, ніж HTML, і вимагає, щоб усі відкриті теги були закриті, навіть якщо вони не є контейнерними тегами. Тому неконтейнерні теги закінчуються на />.