Dimentica il mio esempio e prova con il secondo di questi codici:

1° Codice (qui il problema non sussiste)

codice:
package prova;

import java.awt.*;

import javax.swing.*;

public class Esempio extends JFrame {
    
    public Esempio() {
        setSize(200, 200);
        JPanel jp = new JPanel(); 
        jp.setLayout(new GridLayout(20, 20)); 
        int b = 0; 
        for(int i = 0; i < 20; i++) { 
          for(int j = 0; j < 20; j++) { 
            jp.add(new JButton("Button " + b)); 
            ++b; 
          } 
        } 
        JScrollPane jsp = new JScrollPane(jp); 
        add(jsp, BorderLayout.CENTER); 
        getContentPane().add(jsp, BorderLayout.CENTER);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Esempio interfaccia = new Esempio();
                interfaccia.setVisible(true);
            }
        });
    }

}
2° Codice (qui compare la barra orizzontale ma io vorrei che comparisse quella verticale)

codice:
package prova;

import java.awt.*;

import javax.swing.*;

public class Esempio extends JFrame {
    
    public Esempio() {
        setSize(200, 200);
        JPanel jp = new JPanel(); 
        jp.setLayout(new FlowLayout()); 
        int b = 0; 
        for(int i = 0; i < 20; i++) { 
          for(int j = 0; j < 20; j++) { 
            jp.add(new JButton("Button " + b)); 
            ++b; 
          } 
        } 
        JScrollPane jsp = new JScrollPane(jp); 
        add(jsp, BorderLayout.CENTER); 
        getContentPane().add(jsp, BorderLayout.CENTER);
    }
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Esempio interfaccia = new Esempio();
                interfaccia.setVisible(true);
            }
        });
    }

}

Il problema è che io vorrei la barra verticale e allo stesso tempo il FlowLayout. Detto in altro modo vorrei la botte piena e la fidanzata ubriaca (non sono sposato). Così dovrebbe essere più semplice capire. Leggi il secondo codice, dimentica il primo; non posso usare il GridLayout().