Como passar arrays de painéis em java

galera meu código ta rodando, mas não to conseguindo passar os painéis. Eu quero por os painéis PainelKey dentro do painel jP_folhaA4, através do botão da tela TelaRegistroKey. podem me ajudar.

package br.com.CETT_Telas;

import ClassesApoio.PainelKey;
import java.awt.BorderLayout;
import planosDeFundo.PlanoDeFundo;

public class TelaRegistroKey extends javax.swing.JFrame {

    private PlanoDeFundo planoDeFundo;
    private String caminhoIMG = "/res/bk/bk00.png";
    // referencias
    private int indexColuna;
    private int[] contColuna = new int[7]; //24 playes 7 colunas
    public PainelKey PainelKey;
    public TelaPrincipal telaPrincipal;

    public TelaRegistroKey(TelaPrincipal telaPrincipal) {
        initComponents();
        setLocationRelativeTo(null);
        construtorTela();
        this.telaPrincipal = telaPrincipal;
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jl_bk = new javax.swing.JPanel();
        txtF_dadosP1 = new javax.swing.JTextField();
        lbl_Info1 = new javax.swing.JLabel();
        txtF_nomeP1 = new javax.swing.JTextField();
        txtF_dadosP2 = new javax.swing.JTextField();
        txtF_nomeP2 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        btn_adicionarKey = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Registar Atletas");

        jl_bk.setBackground(new java.awt.Color(102, 102, 102));
        jl_bk.setPreferredSize(new java.awt.Dimension(915, 460));
        jl_bk.setRequestFocusEnabled(false);

        txtF_dadosP1.setFont(new java.awt.Font("Segoe UI", 0, 36)); // NOI18N
        txtF_dadosP1.setText("ex: Escola");
        txtF_dadosP1.setToolTipText("");
        txtF_dadosP1.setName(""); // NOI18N

        lbl_Info1.setBackground(new java.awt.Color(0, 0, 0));
        lbl_Info1.setFont(new java.awt.Font("Swis721 Blk BT", 0, 36)); // NOI18N
        lbl_Info1.setForeground(new java.awt.Color(255, 255, 255));
        lbl_Info1.setText("Registro de Chaves: 00 de 12");
        lbl_Info1.setOpaque(true);

        txtF_nomeP1.setFont(new java.awt.Font("Segoe UI", 0, 36)); // NOI18N
        txtF_nomeP1.setText("Atleta A");
        txtF_nomeP1.setToolTipText("");
        txtF_nomeP1.setName(""); // NOI18N

        txtF_dadosP2.setFont(new java.awt.Font("Segoe UI", 0, 36)); // NOI18N
        txtF_dadosP2.setText("ex: Escola");
        txtF_dadosP2.setToolTipText("");
        txtF_dadosP2.setName(""); // NOI18N

        txtF_nomeP2.setFont(new java.awt.Font("Segoe UI", 0, 36)); // NOI18N
        txtF_nomeP2.setText("Atleta B");
        txtF_nomeP2.setToolTipText("");
        txtF_nomeP2.setName(""); // NOI18N

        jLabel1.setFont(new java.awt.Font("Segoe UI", 1, 70)); // NOI18N
        jLabel1.setText("X");

        btn_adicionarKey.setFont(new java.awt.Font("Segoe UI", 0, 48)); // NOI18N
        btn_adicionarKey.setText("ADD");
        btn_adicionarKey.setToolTipText("");
        btn_adicionarKey.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_adicionarKeyActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jl_bkLayout = new javax.swing.GroupLayout(jl_bk);
        jl_bk.setLayout(jl_bkLayout);
        jl_bkLayout.setHorizontalGroup(
            jl_bkLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jl_bkLayout.createSequentialGroup()
                .addGap(18, 18, 18)
                .addGroup(jl_bkLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txtF_nomeP2, javax.swing.GroupLayout.PREFERRED_SIZE, 735, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jl_bkLayout.createSequentialGroup()
                        .addGroup(jl_bkLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txtF_nomeP1, javax.swing.GroupLayout.PREFERRED_SIZE, 735, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txtF_dadosP2, javax.swing.GroupLayout.PREFERRED_SIZE, 735, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(jl_bkLayout.createSequentialGroup()
                                .addGap(353, 353, 353)
                                .addComponent(jLabel1)))
                        .addGap(18, 18, 18)
                        .addComponent(btn_adicionarKey, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jl_bkLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(lbl_Info1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 735, Short.MAX_VALUE)
                        .addComponent(txtF_dadosP1, javax.swing.GroupLayout.Alignment.LEADING)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jl_bkLayout.setVerticalGroup(
            jl_bkLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jl_bkLayout.createSequentialGroup()
                .addGap(27, 27, 27)
                .addComponent(lbl_Info1)
                .addGap(37, 37, 37)
                .addComponent(txtF_dadosP1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(jl_bkLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jl_bkLayout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtF_nomeP1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtF_dadosP2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jl_bkLayout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(btn_adicionarKey, javax.swing.GroupLayout.PREFERRED_SIZE, 167, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(45, 45, 45)))
                .addComponent(txtF_nomeP2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(19, 19, 19))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jl_bk, javax.swing.GroupLayout.DEFAULT_SIZE, 916, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jl_bk, javax.swing.GroupLayout.DEFAULT_SIZE, 461, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>                        

    public String lblDadosPA;

    private void btn_adicionarKeyActionPerformed(java.awt.event.ActionEvent evt) {                                                 

        lblDadosPA = txtF_dadosP1.getText();
        addPaineis();

    }                                                

    public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
            
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton btn_adicionarKey;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jl_bk;
    private javax.swing.JLabel lbl_Info1;
    private javax.swing.JTextField txtF_dadosP1;
    private javax.swing.JTextField txtF_dadosP2;
    private javax.swing.JTextField txtF_nomeP1;
    private javax.swing.JTextField txtF_nomeP2;
    // End of variables declaration                   

    public void construtorTela() {
        // alt shift F indentaçao
        pladoFundo();

    }

    public void pladoFundo() {

        planoDeFundo = new PlanoDeFundo(caminhoIMG);
        // comoe planode fundoe melhor que cubra toda a areaem x de umleyout null
        jl_bk.setLayout(new BorderLayout());
        jl_bk.add(planoDeFundo, BorderLayout.CENTER);
        planoDeFundo.setBounds(0, 0, planoDeFundo.getImagemLargura(), planoDeFundo.getImagemAltura());
        jl_bk.add(planoDeFundo);
    }

    public void addPaineis() {

        int paIndex = 280 + 150; // base vertical
        int x = 340;
        int width = 150;
        int height = 75;
        int spacing = 170;

        if (contColuna[0] <= 24) {
            int pa = paIndex + indexColuna * spacing;
            telaPrincipal.jP_folhaA4.add(new PainelKey(x, width, height, pa, ""));
            telaPrincipal.jP_folhaA4.repaint();
            telaPrincipal.jP_folhaA4.revalidate();
            indexColuna++;

        }

    }

}

package br.com.CETT_Telas;

import ClassesApoio.PainelKey;
import java.awt.BorderLayout;
import planosDeFundo.PlanoDeFundo;

public class TelaPrincipal extends javax.swing.JFrame {

  // private PainelKey painelKey = new PainelKey();
    
    
    public TelaPrincipal() {
        initComponents();
        setLocationRelativeTo(null);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jP_folhaA4 = new javax.swing.JPanel();
        btn_addKey = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("'");
        setPreferredSize(new java.awt.Dimension(1295, 730));

        jPanel1.setBackground(new java.awt.Color(0, 0, 0));

        jP_folhaA4.setBackground(new java.awt.Color(204, 204, 204));
        jP_folhaA4.setPreferredSize(new java.awt.Dimension(3508, 2480));

        javax.swing.GroupLayout jP_folhaA4Layout = new javax.swing.GroupLayout(jP_folhaA4);
        jP_folhaA4.setLayout(jP_folhaA4Layout);
        jP_folhaA4Layout.setHorizontalGroup(
            jP_folhaA4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 3508, Short.MAX_VALUE)
        );
        jP_folhaA4Layout.setVerticalGroup(
            jP_folhaA4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 2480, Short.MAX_VALUE)
        );

        jScrollPane1.setViewportView(jP_folhaA4);

        btn_addKey.setBackground(new java.awt.Color(0, 204, 255));
        btn_addKey.setFont(new java.awt.Font("Segoe UI", 1, 24)); // NOI18N
        btn_addKey.setForeground(new java.awt.Color(0, 0, 0));
        btn_addKey.setText("EDIT");
        btn_addKey.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_addKeyActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 1115, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(38, 38, 38)
                .addComponent(btn_addKey, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(37, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                .addContainerGap())
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(46, 46, 46)
                .addComponent(btn_addKey, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(589, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>                        

    private void btn_addKeyActionPerformed(java.awt.event.ActionEvent evt) {                                           
     
        TelaRegistroKey registroKey = new TelaRegistroKey(this); // dentro da TelaPrincipal
        registroKey.setVisible(true);
        
    }                                          

    public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TelaPrincipal().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton btn_addKey;
    public javax.swing.JPanel jP_folhaA4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration                   

    public void construtorTela() {

        pladoFundo();

    }

    public void pladoFundo() {

    }

}
package ClassesApoio;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class PainelKey extends JPanel {

    private BufferedImage bufferIMG_PainelKey;
    public int painelKeyX = 340; // base inicial do tamanho em x
    public int painelKeyY = 150;
    public int posPanelKeyX;
    public int posPanelKeyY;
    //
    public String dados_PlayA = new String();
    //apagar
    //public JLabel dados_PlayA = new JLabel();
    //public JLabel nome_PlayA = new JLabel();
    //public JLabel nome_PlayB = new JLabel();
    //public JLabel dados_PlayB = new JLabel();

    public PainelKey(int painelKeyX, int painelKeyY, int posPanelKeyX, int posPanelKeyY,
    String dados_PlayA) {

        this.painelKeyX = painelKeyX;
        this.painelKeyY = painelKeyY;
        this.posPanelKeyX = posPanelKeyX;
        this.posPanelKeyY = posPanelKeyY;
    
    }
    
    public void definirImagem() {

        try {
            InputStream is = getClass().getResourceAsStream(""); // por enquanto null
            if (is != null) {
                BufferedImage original = ImageIO.read(is);

                BufferedImage redimensionada = new BufferedImage(painelKeyX, painelKeyY, BufferedImage.TYPE_INT_ARGB);
                Graphics g = redimensionada.createGraphics();
                g.drawImage(original, 0, 0, painelKeyX, painelKeyY, null);
                g.dispose();

                bufferIMG_PainelKey = redimensionada;
                // Também ajusta o tamanho do painel para o novo tamanho da imagem
                this.setPreferredSize(new java.awt.Dimension(painelKeyX, painelKeyY));
                this.setSize(painelKeyX, painelKeyY);
            } else {
                System.err.println("Imagem não encontrada");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        g.setColor(Color.red);
        g.fillRect(0, 0, getWidth(), getHeight());

        if (bufferIMG_PainelKey != null) {
            g.drawImage(bufferIMG_PainelKey, 0, 0, getWidth(), getHeight(), this);
            
        }

    }

}