Añadiendo JPanel a JScrollPane

Tengo una interfaz gráfica de usuario que tiene un Panel que contiene una secuencia de etiquetas y TextFields y utiliza un diseño de resorte (este es el panel principal) y otro Panel que solo contiene un botón (panel de botones). Estoy tratando de hacer que mi panel principal tenga también una barra de desplazamiento vertical. Me gustaría implementar mi GUI de manera que dentro de JFrame tengo 2 paneles. El panel principal aparece en la parte superior del marco y el botón Panel aparece debajo del panel principal.

Mi problema es que no puedo hacer que aparezcan los Paneles de modo que el Panel de botones esté debajo del Panel principal y tampoco estoy seguro de cómo agregar una barra de desplazamiento al Panel principal. Cualquier ayuda sería apreciada.

EDITAR: Pude resolver mi problema con respecto a los JPanels, ahora mi único problema es que no puedo hacer que mi panel principal se desplace. He añadido mi código más reciente a continuación:

Aquí está el código que tengo hasta ahora:

public static void main(String args[]) {


            JFrame frame = new JFrame("SpringLayout");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JScrollPane scroll = new JScrollPane();
            Container contentPane = frame.getContentPane();

           JButton next = new JButton("Next");
           JPanel buttonPanel = new JPanel();
           buttonPanel.add(next);
            SpringLayout layout = new SpringLayout();
            JPanel mainPanel = new JPanel();
            mainPanel.setLayout(layout);
            contentPane.setLayout(new BorderLayout());


            int j = 25;
            for(int i =0;i<150;i++){
                JLabel label = new JLabel("Enter Name " + i );
                JTextField text = new JTextField(15);

            mainPanel.add(label);
            mainPanel.add(text);
            layout.putConstraint(SpringLayout.WEST, label, 10, SpringLayout.WEST,
                            contentPane);
            layout.putConstraint(SpringLayout.NORTH, label, j, SpringLayout.NORTH,
                            contentPane);
            layout.putConstraint(SpringLayout.NORTH, text, j, SpringLayout.NORTH,
                            contentPane);
            layout.putConstraint(SpringLayout.WEST, text, 20, SpringLayout.EAST,
                            label);
            j+=30;
            }
            //mainPanel.setSize(500,800);
            scroll.setPreferredSize(new Dimension(500,500));
            scroll.setViewportView(mainPanel);
            contentPane.add(scroll);
            contentPane.add(buttonPanel,BorderLayout.SOUTH);
            //mainWindow.add(contentPane);
            frame.setSize(500, 600);
            frame.setVisible(true);



        }

Respuestas a la pregunta(3)

Su respuesta a la pregunta