"setLayout(null)" ist KEIN Layoutmanager.
Es wird einfach nur keiner gesetzt! Klar so kann man einfach ohne große Probleme sagen wie groß soll Komponente A sein und wo soll sie liegen.
Zu Problemen führt es dann erst wenn der Benutzer das Programmfenster größer/kleiner machen will.
Ohne Layoutmanager bleiben alle Komponenten wo sie sind und es muss aufwendig herumgescrollt werden vom User. Mit Layoutmanager verschieben sich die Elemente und werden abhängig von anderen Elementen größer/kleiner usw.
Sprich mit Layoutmanagern sind UIs realisierbar, welche bei fast jeder Fenstergröße eine optimale Aufteilung der Elemente gewährleistet.
Welchen Layoutmanager du nun einsetzten musst/sollst kann man nicht pauschal beantworten. Es gibt einige und jeder hat Vor- und Nachteile. Es gibt Situationen in dem ein FlowLayout besser ist als ein Gridlayout, aber in anderen Situationen geht nichts über das BorderLayout.
Sprich welches du einsetzt musst du dir selber überlegen, probiere einfach mal alle aus und verschachtel auch mehrere LayoutManager in einander um zu sehen wie sich das Layout ändern wenn mehr oder weniger Komponenten zu sehen sind bzw. das Fenster größer oder kleiner ist.