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.