Mark required fields as such

Don’t make your users guess which fields in your form are required. Mark them as such:

TextField tfFirstName = new TextField("First name");
tfFirstName.setRequired(true);
tfFirstName.setRequiredError("First name must be filled in!");

Required fields get a small asterisk after the caption (or after the field itself, if it doesn’t have a caption), which is quite universally understood to mean “required”. Of course, it certainly doesn’t hurt to have “footnote” somewhere in your form that explains it anyway.

Marking a field as required also implicitly adds a non-empty validator to the field, preventing the form from being submitted unless a value has been entered. The error message associated with that validator can be set with the setRequiredError() method:

TextField tfFirstName = new TextField("First name");
tfFirstName.setRequired(true);
tfFirstName.setRequiredError("First name must be filled in!");

Think carefully about which fields really are required, though. For instance, asking unnecessary questions in a sign-up form has a tendency to make people either cancel signing up, or enter nonsense information in fields they deem nonessential. Only mark as required fields that you really need the user to fill in, right there and then.