Well (to reply to my own post), I've now found a little success overriding the layout() method.. still I'd be interested to share experiences with others who've tried using the various FieldManagers.
I've included the relevant code in case anyone finds it useful. These methods form part of your custom edit field class.
public int getPreferredWidth()
// If you don't want the field resizing as text is added (an empty field will
// have zero input width, therefore), change getText() to some known
// string, for example the longest string you want displayed.
return getFont().getAdvance(getLabel() + getText());
protected void layout(int width, int height)
width = getPreferredWidth();
height = getPreferredHeight();