Originariamente inviato da Azzurra85
Ho risolto impostando oltre a maxSize.width anche maxSize.heigth e poi chiamando p.setMaximumSize(maxSize).
Grazie ancora!!!
Tieni però presente che il BoxLayout funziona così: viene usato il "maximum" solo se c'è spazio disponibile ... se non c'è spazio disponibile, il minimo è dato dal "preferred".

Se vuoi capire meglio, metti nel mio sorgente prima del return:

codice:
        Dimension prefSize = p.getPreferredSize();
        prefSize.height = 40;
        p.setPreferredSize(prefSize);

        Dimension maxSize = p.getMaximumSize();
        maxSize.width = Integer.MAX_VALUE;
        maxSize.height = 80;
        p.setMaximumSize(maxSize);
Lancia e vedrai che i pannelli sono dimensionati al massimo in orizzontale e a 80 (maximum height) in verticale. Ora ridimensiona solo verticalmente la finestra, vedrai che non compare subito la scrollbar verticale!!! I pannelli si restringono in verticale. Quando l'altezza dei pannelli arriva al preferred height, allora se restringi ancora di più in verticale compare la scrollbar verticale.

Più chiaro ora?