Дело в том, что вы создаете один и тот же объект hfm1 снова и снова 3 раза
Вы можете создать 3 разных объекта, таких как hfm1, hfm2 и hfm3
как
VerticalFieldmanager vfm = new VerticalFieldManager();
HorizontalFieldManager hfm1 = new HorizontalFieldManager();
{somecode}
HorizontalFieldManager hfm2 = new HorizontalFieldManager();
{somecode}
HorizontalFieldManager hfm3 = new HorizontalFieldManager();
vfm.add(hfm1);
vfm.add(hfm2);
vfm.add(hfm3);
add(vfm)
или
VerticalFieldmanager vfm = new VerticalFieldManager();
HorizontalFieldManager hfm1 = new HorizontalFieldManager();
{somecode}
hfm1 = new HorizontalFieldManager();
{somecode}
hfm1 = new HorizontalFieldManager();
{somecode}
Но при этом добавляется только последний hfm1, поскольку из-за полиморфизма во время выполнения ... объект первого hfm1 освобождает память, когда инициализируется второй hfm1, а третий hfm1 освобождает объектную память второго добавленного hfm1
Таким образом, только последний HFM1 добавляется в VFM
в этом случае ... лучше следовать первому подходу.