There are many options to solve the problem. First the easy way:
ListBox box=new ListBox(); Label lbl=new Label("Countrys"); this.add(box); this.add(lbl);This code a lot of programmers have to do for hundrets of input fields, comboboxes and so on.I would recomment, to build up for your most needed UI Elements a class, which also contains the label and the data containing element.
public class MisTextAreaWithLabel extends MisVerticalPanel { private TextArea area; private Label lbl; public MisTextAreaWithLabel(String label) { this.lbl = new Label(label); this.area = new TextArea(); this.add(area); this.add(lbl); } public void setValue(String newValue) { this.area.setValue(newValue); } public String getValue() { return this.area.getValue(); } }This code is easyly useable with:
MisTextAreaWithLabel area=new MisTextAreaWithLabel("firstname"); this.add(area);By creating a new Panel where the element and it’s description is on, you can save a lot of code and you will be able to change the behavior of all your UI Elements easyly.