Bon, y'a deux écoles, en fait : soit tu utilises plein de LayoutManagers simples (FlowLayout, BoxLayout, et BorderLayout sont ceux que j'utilise dans ces cas là), et en imbricant des panels les uns dans les autres, tu divise ton problème en problèmes plus petits, gérables facilement avec un layout simple...
Sinon, l'autre approche est d'utiliser le GridBagLayout, certes plus galère à maîtriser au début, mais qui offre des possibilités beaucoup plus importantes, notamment au niveau de l'agrandissement relatif des composants lors d'un agrandissement de la fenêtre...
On peut aussi mixer les deux : utliiser un GridBagLayout pour gérer des "gros blocs" eux mêmes gérés par des LayoutManagers plus simples..
Sinon, placer les composants à des positions précises, c'est pas évident non plus : ça t'oblige à connaître à l'avance leur taille, et donc, si tu changes un label ou le texte d'un bouton, tu sera dans la merde....
Voilà voila!!