Am să îți dau un răspuns dar poate nu va fi cel mai bun doarece și eu am început Java de puțin timp și deocamdată nu am ajuns să lucrez cu swing (decât ce am învățat acum de pe net

).
Din câte am înțeles de pe internet, o fereastră este redimensionată când e apelată metoda pack(). Ea calculează dimensiunile obiectelor din fereastră și re-setează mărimea ferestrei. Astefel dacă ai pune this.pack() în fiecare metodă care e apelată în funcție de eventuri fereastra s-ar redimensiona.
Problema care apare în continuare este că fereastra se redimensionează doar pe orizontală. Cred că e din cauza layoutului pe care l-ai ales (FlowLayout). Dacă redimensionezi manual, labelurile se vor muta singure (din cauza comportamentului FlowLayout).
Nu sunt prea sigur de mine, așa că nu te baza prea tare pe ce spun.
Așteaptă să vadă Morpheus threadul. El îți va răspunde exact