Ciao a tutti, mi sono imbattuto in un problemino curioso, all'interno di un JFrame assime ad altri pannelli uso una JList all'interno di un JScrollPane adesso con 2 bottoncini dovrei inserire elementi nella JList, l'inserimento avviene ma lo scroll non si attiva
ho fatto vari esperimenti per vedere dove era l'errore e ho notato che se nella lista metto valori prima lo scroll funziona altrimenti quindi immagino che sia dovuto ai componenti che la ospitano ma no riesco a capire come farla funzionare, qui parte del codice per spiegare meglio:

codice:
 items = new Vector<EspreListItem>();
  //inserendo gli elementi prima lo scroll si attiva      
//        for(int i=0;i<20;i++){
//            items.add(new EspreListItem("ciao"+i, "120+321"));
//        }

        listaPassato=new JList<EspreListItem>(items);
        listaPassato.addListSelectionListener(new AscoltatoreSelezioni(espressione));

        arrowIn.addActionListener(new InserisciAction());//qui viene chiamata l'azione

        
        scrollJList=new JScrollPane(listaPassato);

        scrollJList.setPreferredSize(new Dimension(400, 65));
        listaPassato.setLayoutOrientation(JList.HORIZONTAL_WRAP);
        listaPassato.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        
        
        panSud.setPreferredSize(new Dimension(500, 100));
        panSud.add(scrollJList);
        pannelloPrincipale.add(panSud,BorderLayout.SOUTH);
        finestra.add(pannelloPrincipale);
l'azione che viene eseguita al momento dell'inserimento è questa :

codice:
private class InserisciAction implements ActionListener{
        
        @Override
        public void actionPerformed(ActionEvent e) {
            if(espressione.getText().isEmpty()){
                mostraAvvertenza("Non è presente alcuna espressione da salvare!");
            }else{
                
                items.add(new EspreListItem(JOptionPane.showInputDialog("Inserisci il nome:"), espressione.getText()));
                
                scrollJList.getViewport().validate();
                panSud.repaint();
                
                
            }
        }

       
    }
dove sbaglio che dovrei cambiare?