Premetto che non mi è chiaro se quella che hai descritto è l'intera interfaccia utente (es. l'intero contenuto di un JFrame) o solo una parte. Ma poco cambierebbe. Prendo per buono il fatto di considerare un pannello principale .... se poi invece fosse già il content-pane di un JFrame, cambia davvero poco/nulla.
Quello che hai chiesto si può fare e anche in diversi modi. Tutto però dipende da alcuni criteri di dimensionamento che non hai precisato. Infatti le questioni potrebbero essere:
a) i 5 pannelli sulla sinistra devono adattarsi per stare tutti alla stessa dimensione?
b) indipendentemente da a), l'insieme dei 5 pannelli deve occupare verticalmente tutto lo spazio del pannello principale? Oppure no? (in quest'ultimo caso, il pannello dx potrebbe essere più alto).
Comunque ecco alcune soluzioni:
Soluzione 1).
- Pannello principale con un BorderLayout:
--- In WEST c'è un altro pannello con un GridLayout che contiene i tuoi 5 pannelli in verticale (quindi 5 righe x 1 colonna). Essendo un GridLayout, i pannelli sono tutti della stessa dimensione. Ed essendo in WEST, l'insieme dei pannelli occupa tutto lo spazio verticale del pannello principale.
--- In CENTER c'è il pannello a destra. Essendo in CENTER, occupa tutto lo spazio "che resta".
Soluzione 2)
- Pannello principale con un GridBagLayout (che da solo è in grado di gestire tutti i 6 pannelli):
- Una colonna di 5 celle, tutte queste celle possono avere lo stesso weighty (es. 1) in modo che si spartiscano equamente lo spazio (ma puoi cambiare le proporzioni se serve).
- Un'altra colonna a destra che "spanna" su 5 righe. Qui puoi anche fare in modo che il pannello occupi tutto lo spazio disponibile oppure stia alla sua dimensione "preferita" (e in quest'ultimo caso, ancorarlo verso il lato che vuoi).
Ma ce ne sono altre di possibilità ... ne ho dette giusto 2.![]()


Rispondi quotando
