Component

Component serves as the highest level abstract base class for all components. These are some of the common component features:

WebComponent

Base class for simple HTML components which do not hold nested components.

MarkupContainer

A MarkupContainer holds an array of child components. Children can be added by calling the add(), addOrReplace() methods and replaced by replace() method. Children can be looked up using a dotted path. For example, if a container called "a" held a nested container "b" which held a nested component "c", then a.get("b.c") would return the Component with id "c". The number of children in a MarkupContainer can be determined by calling size(). The children of a MarkupContainer can be iterated using iterator() method. The whole hierarchy of children held by a MarkupContainer can be traversed by calling visitChildren(), passing in an implementation of Component.IVisitor.
Normally you should not subclass MarkupContainer. Instead subclass a markup-specific class such as WebPage or WebMarkupContainer.

WebMarkupContainer

A container of HTML markup and components. It is very similar to the base class MarkupContainer, except that the markup type is defined to be HTML. Subclass WebMarkupContainer to define an inline component (a component which has its markup in parent's container markup file).

WebMarkupContainerWithAssociatedMarkup

It is very similar to the base class WebMarkupContainer except that it adds the ability to process <wicket:head> tag. Though it may seem from the name of the class that its subclasses must have their own file with markup, it is not so. To create a component with associated markup file you should subclass Panel.

Page

Page is an abstract base class for pages. As a MarkupContainer subclass, a Page can contain a component hierarchy and markup in some markup language such as HTML. Users of the framework should not attempt to subclass Page directly. Instead they should subclass WebPage.

Panel

A panel is a reusable component that holds markup and other components. A panel has its own associated markup file and the container content is taken from that file.
See Panel for more information.

Border

A border component has associated markup which is drawn and determines placement of any markup and/or components nested within the border component.
The portion of the border's associated markup file which is to be used in rendering the border is denoted by a <wicket:border> tag. The children of the border component instance are then inserted into this markup, replacing the first <wicket:body> tag in the border's associated markup.
See Consistent page layout using borders.