The width being zero can be for several reasons, but
utimately because it hasn't been realized yet (or has been
explicity set to zero). For example, components created dynamically
have a default width and height of zero. It is generally up to
their parent containers to size them, explicity setting their width
and height, or the component overrides the measure function and
sets its own size.
var submit:Button = new Button();
submit.label = "Submit";
The button will not appear because it is 0x0. You have to
specify the size.