Como colocar barra de rolagem no meu app?

Estou começando a desenvolver isso, apenas para aprender a adicionar coisas pelo for, e quando ficar grande mexer no tamanho da tela. Mas me deparei nesse detalhe, e se o número de coisas for maior que o tamanho da tela do pc ?

Segue meu código:
Main:

public class Main {
    public static void main(String args[]) {
      new Tela();
   }
}

Tela:

[code]

import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class Tela extends JFrame {

private JFrame frame;
JLabel digite;
JTextField campodigite;
JButton ok;
int produtos;

Bg bg = null;



public Tela() {
    
    
    
    frame = new JFrame("Quantidade");
    bg = new Bg();
    frame.getContentPane().add(bg);
    frame.setSize(800, 360);
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);
    bg.setLayout(null);//definindo o layout
    digite = new JLabel("Digite o número de produtos:");
    ok = new JButton();
    campodigite = new javax.swing.JTextField(); 
    ok.setText("ok");
    digite.setBounds(300,10,170,20);
    campodigite.setBounds(471,10,30,20);
    ok.setBounds(502,10,30,20);
    digite.setForeground(new java.awt.Color(240, 240, 240));
    
    
    
    ok.setMargin(new Insets(2, 4, 2, 4));
    ok.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            okActionPerformed(evt);
        }
    });
    bg.add(ok);
    bg.add(campodigite);
    bg.add(digite);
    JScrollPane p = new JScrollPane();
    
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.setVisible(true);
}

private void okActionPerformed(java.awt.event.ActionEvent evt) {
    int produtos = Integer.parseInt(campodigite.getText());
   if (produtos > 14) {
        for (int i = 14; i < produtos; i++) {
            Toolkit toolkit = Toolkit.getDefaultToolkit();
            Dimension scrnsize = toolkit.getScreenSize();
            int heigth = (int) scrnsize.getHeight();
            int proximaAltura;
            proximaAltura = ((i - 14) * 25) + 360;
            if (proximaAltura < heigth) {
                frame.setSize(800, proximaAltura);
                frame.setLocationRelativeTo(null);
            }

        }
    }
    for (int i = 0; i < produtos; i++){
        String numero = ("produto: " + (i + 1));
        JLabel b = null;
        b = new JLabel();
        b.setText(numero);
        b.setForeground(new java.awt.Color(240, 240, 240));
        int altura;
        altura = (i * 20) + 40;
        b.setBounds(350, altura, 100, 20);
        bg.add(b);
        bg.repaint();
    }
    
}

}[/code]

Bg (serve apenas para ficar com a imagem no fundo):

[code]import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class Bg extends JPanel {

public Bg() {
   
    
}

public void paintComponent(Graphics g) {

    Graphics2D gr = (Graphics2D) g.create();

    try {
        Image imagem = ImageIO.read(getClass().getResourceAsStream("bg.png"));
        gr.drawImage((BufferedImage) imagem, null, 0, 0);

    } catch (IOException ex) {
        Logger.getLogger(Bg.class.getName()).log(Level.SEVERE, null, ex);
    }

}

}[/code]

Eu uso um If dentro do for do primeiro if da ação do botão ok para que a próxima altura do app for maior que o tamanho da tela do monitor, a altura do app será do mesmo tamanho da tela do monitor, então, eu preciso colocar um scroll caso tenha mais números.
Então, alguém me ajuda como fazer isso? Devo colocar o scroll em Bg ou em Tela?
E, se alguém também souber como eu colocar o que tem no Bg em Tela, eu ficaria muito grato também.

As barras de rolagem serão criadas automaticamente quando você colocar os componentes em um JScrollPane. Pesquise sobre ele.

Mas para que o JScrollPane funcione, você deve implementar o método getPreferredSize() do seu painel para que ele retorne o tamanho total do painel.

Oi, sou iniciante e estou com um problema parecido. Você poderia dar um exemplo de como fazer isso ?