Fazer um JPanel externo ficar dentro de um JFrame principal [Resolvido]

E aew pessoal eu sou novo aqui no Forum, leio sempre os artigos tudo mais. Agora eu to com um problema que nem lendo estou conseguindo resolver.

É o seguinte eu tenho um JFrame como tela principal de um programa…
Eu tenho de chamar uma tela JPanel que deve abrir dentro deste JFrame…

Tentei utilizar JInternalframe, mas neste caso ele não é apropriado, pois não quero que o usuário abra varias telas…
Ou seja, se o usuário clicar em cadastro (na barra de menu) o programa tem abrir a tela de cadastro no JFrame principal, se a tela for maior que a tela principal o programa exibe o painel de rolagem para a visualização da tela inteira, se o usuário clicar em excluir (na barra de menu) o programa exclui a tela de cadastro do JFrame principal e coloca a tela de exclusão no lugar… Como eu posso resolver o meu problema?

Obs: neste programa existe um JPanel no rodapé que ñ pode desaparecer quando o usuário solicitar um serviço a barra de menu.

Desde já eu agradeço a todos do site, e por favor me ajudem, a ajuda de vcs vão ser muito importante para mim e para as outras pessoas que tiverem esta mesma duvida…

Por favor, pessoal me ajudem!!!
Não é possível que ninguém não tenha tentado fazer isso!!!
Respondam pelo menos pra dizer que não tem como fazer…

Cara plz não fique dando up na sua pergunta, eu só olho quem tem 0 respostas, como vc deu UP na sua, tinha 1 resposta, logo quase nao entrei pois já deveria estar resolvido.

Bom quanto a sua ideia, é meio fora do padrão, vc deveria usar JDialogs como modal, pois assim o usuário não poderia clicar no frame sem resolver o dialogo, ou seja, ele não pode ficar brincando na sua aplicação com N janelas.

O Dialog é como um frame, mas é feito para ser uma janela secundária, não a principal da aplicação, então ele tem a opção modal, quando ela é true, ele trava todo o resto do sistema até o diagolo ser fechado.

Agora assim se vc quiser mesmo usar o JPanel, ok.

Para aparecer a barra de rolagem vc precisará colocar o JPanel dentro de um ScrollPane, ele colocará e removerá a barra conforme o necessário.

Para o Scrollpane ficar do tamanho da tela, use o BorderLayout no seu frame.

Depois disso quando for adicionar o scrollpane no frame adicione +/- assim:

frame = new JFrame();

frame.setLayout(new BorderLayout());

frame.add(myScrollPane, BorderLayout.CENTER);

Ai depois vc adiciona seu JPanel no ScrollPane e deve funcionar.

E aew heroijapa?
Valew pela resposta…
Tentei adicionar o meu JPanel ao JScrollPane mais não aparece nada … (mais tbm não da erro… kkk)
Pra add o JPanel eu fiz assim:

jScrollPane1.add(new Externo());

no caso do JScrollpane em teoria ele tem um componente só dentro dele.

Ele não funciona com o ADD ele funciona quando você instancia ele

então

myScrollPane = new JScrollPane(myPanel);

ai depois vc adiciona o scrollpane no jframe como vc faz normalmente

valew heroijapa!!!

Graças a essa sua dica eu acabei descobrindo outra forma de fazer isso

Que é utilizando o setViewport, um método de JScrollPane!!!
\o/
Pra chamar o JPanel utilizei este código na classe principal:

jScrollPane1.setViewportView(new Externo1());

Bem… Como ainda tem gente que ainda tem duvida com relação a este procedimento

eu acabei fazendo um projeto exemplo no NetBeans

Neste caso são 3 classes…

Principal:

package Telas;

public class Principal extends javax.swing.JFrame {
    
    public Principal() {
        initComponents();
    }
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jScrollPane1.setMinimumSize(new java.awt.Dimension(230, 230));
        jScrollPane1.setName("jScrollPane1"); // NOI18N
        jScrollPane1.setPreferredSize(new java.awt.Dimension(500, 500));
        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jMenuBar1.setName("jMenuBar1"); // NOI18N

        jMenu1.setText("Telas");
        jMenu1.setName("jMenu1"); // NOI18N

        jMenuItem1.setText("Externo1");
        jMenuItem1.setName("jMenuItem1"); // NOI18N
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuItem2.setText("Externo2");
        jMenuItem2.setName("jMenuItem2"); // NOI18N
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem2);

        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

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

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        jScrollPane1.setViewportView(new Externo1());
    }

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
        jScrollPane1.setViewportView(new Externo2());
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Principal().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration

}

Externo1

package Telas;

import javax.swing.JOptionPane;

public class Externo1 extends javax.swing.JPanel {
    public Externo1() {
        initComponents();
    }
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();

        setBackground(new java.awt.Color(204, 255, 255));

        jLabel1.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N
        jLabel1.setText("Externo1");
        jLabel1.setName("jLabel1"); // NOI18N

        jButton1.setText("Teste");
        jButton1.setName("jButton1"); // NOI18N
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(49, 49, 49)
                        .addComponent(jLabel1))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(63, 63, 63)
                        .addComponent(jButton1)))
                .addContainerGap(209, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(34, 34, 34)
                .addComponent(jLabel1)
                .addGap(26, 26, 26)
                .addComponent(jButton1)
                .addContainerGap(173, Short.MAX_VALUE))
        );
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        JOptionPane.showMessageDialog(null,"Funcionando!!!","alert", JOptionPane.ERROR_MESSAGE);
    }


    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration

}

Externo2

package Telas;

import javax.swing.JOptionPane;
public class Externo2 extends javax.swing.JPanel {

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

        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();

        setBackground(new java.awt.Color(255, 255, 153));

        jLabel1.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N
        jLabel1.setText("Externo2");
        jLabel1.setName("jLabel1"); // NOI18N

        jButton1.setText("Teste");
        jButton1.setName("jButton1"); // NOI18N
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(49, 49, 49)
                        .addComponent(jLabel1))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(63, 63, 63)
                        .addComponent(jButton1)))
                .addContainerGap(209, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(34, 34, 34)
                .addComponent(jLabel1)
                .addGap(26, 26, 26)
                .addComponent(jButton1)
                .addContainerGap(173, Short.MAX_VALUE))
        );
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        JOptionPane.showMessageDialog(null,"Funcionando!!!","alert", JOptionPane.ERROR_MESSAGE);
    }


    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration

}

Espero que gostem!!!

Vc pode Fazer dessa forma também.

this.setDefaultCloseOperation(HIDE_ON_CLOSE);
this.setContentPane(new SeuPanel());
this.validate();
this.repaint();
this.setVisible(true);