ich habe so ein ähnliches Problem auch gehabt, ich wollte dass mein programm auf verschiedenen Rechnern mit verschiedener Auflösung gleich aussieht.
Ist sicher bei weitem nicht die beste Lösung, aber ich habe es so gelöst.
1. Ich habe swing verwendet, damit habe ich schon mal überall das selbe Layout von der Farbgebung her. Da mir die durchaus gefiel passte das so.
2. Ich habe einen Desktopmanager genommen, den in das Basisfenster integriert und für das Basisfenster eine Defaultgröße festgelegt, die aber vom Nutzer jederzeit geändert werden kann.
3. Alle weiteren Fenster erzeuge ich als JInternalFrame und platziere sie im oberen linken Bereich des Basisfensters. Dabei variiere ich die Position von Fenster zu Fenster ein wenig, damit nicht 2 Fenster komplett übereinander liegen.
4. Die JInternalFrame habe ich layoutet, alles so angteordnet wie ich es haben wollte und dann die Größe fix gehalten. Man kann also die internen Fenster nicht verändern.
Ich habe das Basisfenster derzeit noch mit einer fixen Größe ausgelegt, wenn man das aber maximiert startet, dann hat man den ganzen Bildschirm zur Verfügung, egal wie groß auch immer dieser sein mag. Die einzelnen internen Fenster hingegen werden mit fixer Größe angezeigt, können nach belieben verschoben werden, aber das Layout sieht immer gleich aus. Das einzige was sich noch ändert ist die Lage der einzelnen Fenster. Aber auch dies könnte man fix einstellen.
Mein Programm wird über ein Menü gesteuert, bei Programmstart passiert daher nichts außer eben dieses Basisfenster zu öffnen. Aber da ist man ja flexibel.
Ich denke wenn man das JInternalFrame entsprechend modifiziert kann man auch den Fensterinhalt entsprechend darstellen, dass es als ein großes Fenster wirkt (kein Rand, keine Überschrift etc).
Wenn dann das interne Frame oben links angeordnet wird, dann kann das Basisfenster beliebig größentechnisch verändert werden ohne dass es Einfluß auf den dargestellten Bereich hat.