Component Extensions
Components and UIs can have extensions which are attached to the component dynamically. Especially, many add-ons are extensions.
How a component is extended depends on the extension. Typically, they have an extend() method that takes the component to be extended as the parameter.
TextField tf = new TextField("Hello");
layout.addComponent(tf);
// Add a simple extension
new CapsLockWarning().extend(tf);
// Add an extension that requires some parameters
CSValidator validator = new CSValidator();
validator.setRegExp("[0-9]*");
validator.setErrorMessage("Must be a number");
validator.extend(tf);
Development of custom extensions is described in "Component and UI Extensions".