Salve ragazzi, ho una finestra che viene riempita con diversi elementi dentro presi da un database e ho inserito uno JScrollPane. Funziona tutto bene tranne per il fatto che quando apro la finestra, la barra parte da poco sotto la metà della mia finestra mentre vorrei che partisse dall'alto. Non so proprio dove sia l'errore. Mi date una mano?

Questo è il codice della mia finestra... Deve visualizzare una lista di discipline sportive con immagine, affianco descrizione, sotto testimonianza con costo mensile e poi così le altre.
Vi avviso che comunque uso da pochissimo Java quindi se vedete cose non proprio eleganti è per questo.

Grazie

codice:
public class ListaDiscipline extends JFrame
{
 ArrayList<Disciplina> listaDiscipline;
 JButton indietro=new JButton("Indietro");
 JPanel p=new JPanel();
 JPanel s=new JPanel();
 JScrollPane scrollesterno;
 
 
 public ListaDiscipline()
 {
     super("Lista Discipline");
     Container c=this.getContentPane();
     listaDiscipline = DisciplinaDAO.getInstance().getListaDiscipline();
     int nDisc=listaDiscipline.size();
     
     ImageIcon[] immagini = new ImageIcon[nDisc];
     JLabel listaIcone[]=new JLabel[nDisc];
     JLabel costi[]=new JLabel[nDisc];
     JTextArea areedescr[]=new JTextArea[nDisc];
     JTextArea areetest[]=new JTextArea[nDisc];
     Border border = BorderFactory.createLineBorder(Color.BLACK);
     JPanel sp[]=new JPanel[nDisc];
     JPanel st[]=new JPanel[nDisc];
     JPanel sez[]=new JPanel[nDisc];
     int i,j,k,w;
     
     //Carico tutti i componenti
     for(i=0;i<nDisc;i++)
     {
         
         immagini[i]=new ImageIcon(listaDiscipline.get(i).immagineDisc);
         listaIcone[i]=new JLabel(immagini[i]);
         areedescr[i]=new JTextArea(listaDiscipline.get(i).descrizioneDisc);
         areedescr[i].setLineWrap(true);
         areedescr[i].setBorder(border);
         areedescr[i].setEditable(false);
         areetest[i]=new JTextArea(listaDiscipline.get(i).testimonianzaDisc);
         areetest[i].setBorder(border);
         areetest[i].setLineWrap(true);
         areetest[i].setEditable(false);
         String cost=Float.toString(listaDiscipline.get(i).costoMensileDisc);
         costi[i]=new JLabel("                             Il costo mensile è di € "+ cost);
     }
     
     p.setLayout(new GridLayout(nDisc,1,0,80));
     
     for(j=0;j<nDisc;j++)
     {
         sp[j]=new JPanel(new GridLayout(1,2,20,20));
         st[j]=new JPanel(new GridLayout(1,2,20,20));
         sp[j].add(listaIcone[j]);
         sp[j].add(areedescr[j]);
         st[j].add(areetest[j]);
         st[j].add(costi[j]);
     }
     BoxLayout boxsez[]=new BoxLayout[nDisc];
     
     for(k=0;k<nDisc;k++)
     {
         sez[k]=new JPanel();
         boxsez[k]=new BoxLayout(sez[k],BoxLayout.Y_AXIS);
         sez[k].setLayout(boxsez[k]);
         sez[k].add(sp[k]);
         sez[k].add(st[k]);
     }
     
     for(w=0;w<nDisc;w++)
     {
         p.add(sez[w]);
     }
     
     s.setLayout(new BorderLayout());
     s.add(indietro, BorderLayout.NORTH);
     s.add(p,BorderLayout.CENTER);
     
     

     scrollesterno = new JScrollPane(s);
     scrollesterno.getVerticalScrollBar().setUnitIncrement(7);
     c.add(scrollesterno);
     
     this.setDefaultCloseOperation(EXIT_ON_CLOSE);
     this.setSize(700,484);
     this.setLocation(300,150);
     this.setVisible(true);
     this.setResizable(false);