Abrir JPanel acionado por JButton(evento ActionPerformed)

Boa Tarde Pessoas,

Estou fazendo um pequeno sistema de cadastro, utilizando netbeans 5.5 como IDE e Firebird para banco de dados. Estou iniciando o modulo para pesquisa nesse meu programa e a minha duvida/dificuldade surgiu e é a seguinte: Quero que o JPanel(que desenhei em outra classe “.java”) abra quando apertar o JButton(Botão Pesquisar que esta na classe do JFrame).

Esse código abaixo é do JPanel

Código:

package SistemaCadastro;

public class Pesquisa extends javax.swing.JPanel {

public Pesquisa() { 
    initComponents(); 
} 

private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jRadioButton1 = new javax.swing.JRadioButton();
jRadioButton2 = new javax.swing.JRadioButton();
jRadioButton3 = new javax.swing.JRadioButton();
jRadioButton4 = new javax.swing.JRadioButton();
jLabel2 = new javax.swing.JLabel();
txtPesquisa = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();

    jLabel1.setText("Pesquisar por:"); 

    jRadioButton1.setMnemonic('c'); 
    jRadioButton1.setText("C\u00f3digo"); 
    jRadioButton1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 
    jRadioButton1.setMargin(new java.awt.Insets(0, 0, 0, 0)); 

    jRadioButton2.setMnemonic('n'); 
    jRadioButton2.setText("Nome"); 
    jRadioButton2.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 
    jRadioButton2.setMargin(new java.awt.Insets(0, 0, 0, 0)); 

    jRadioButton3.setMnemonic('i'); 
    jRadioButton3.setText("ID#"); 
    jRadioButton3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 
    jRadioButton3.setMargin(new java.awt.Insets(0, 0, 0, 0)); 

    jRadioButton4.setMnemonic('d'); 
    jRadioButton4.setText("Cidade"); 
    jRadioButton4.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0)); 
    jRadioButton4.setMargin(new java.awt.Insets(0, 0, 0, 0)); 

    jLabel2.setText("Ref.:"); 

    txtPesquisa.setText("jTextField1"); 

    jButton1.setText("Pesquisar"); 

    jTable1.setModel(new javax.swing.table.DefaultTableModel( 
        new Object [][] { 
            {null, null, null, null}, 
            {null, null, null, null}, 
            {null, null, null, null}, 
            {null, null, null, null} 
        }, 
        new String [] { 
            "Título 1", "Título 2", "Título 3", "Título 4" 
        } 
    )); 
    jScrollPane1.setViewportView(jTable1); 

    org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this); 
    this.setLayout(layout); 
    layout.setHorizontalGroup( 
        layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
        .add(layout.createSequentialGroup() 
            .addContainerGap() 
            .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
                .add(layout.createSequentialGroup() 
                    .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 515, Short.MAX_VALUE) 
                    .addContainerGap()) 
                .add(layout.createSequentialGroup() 
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
                        .add(layout.createSequentialGroup() 
                            .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
                                .add(jLabel1) 
                                .add(layout.createSequentialGroup() 
                                    .add(jRadioButton1) 
                                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 
                                    .add(jRadioButton2))) 
                            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 
                            .add(jRadioButton3) 
                            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 10, Short.MAX_VALUE) 
                            .add(jRadioButton4)) 
                        .add(layout.createSequentialGroup() 
                            .add(jLabel2) 
                            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 
                            .add(txtPesquisa, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 86, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 
                            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 
                            .add(jButton1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE))) 
                    .add(319, 319, 319)))) 
    ); 
    layout.setVerticalGroup( 
        layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
        .add(layout.createSequentialGroup() 
            .addContainerGap() 
            .add(jLabel1) 
            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 
            .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 
                .add(jRadioButton1) 
                .add(jRadioButton2) 
                .add(jRadioButton4) 
                .add(jRadioButton3)) 
            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 
            .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 
                .add(jLabel2) 
                .add(txtPesquisa, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 
                .add(jButton1)) 
            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 
            .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 
            .addContainerGap(21, Short.MAX_VALUE)) 
    ); 
}// </editor-fold>                        

// Declaração de variáveis - não modifique                      
private javax.swing.JButton jButton1; 
private javax.swing.JLabel jLabel1; 
private javax.swing.JLabel jLabel2; 
private javax.swing.JRadioButton jRadioButton1; 
private javax.swing.JRadioButton jRadioButton2; 
private javax.swing.JRadioButton jRadioButton3; 
private javax.swing.JRadioButton jRadioButton4; 
private javax.swing.JScrollPane jScrollPane1; 
private javax.swing.JTable jTable1; 
private javax.swing.JTextField txtPesquisa; 
// Fim da declaração de variáveis                    

}

Esse é o código do evento ActionPerformed inserido no JButton

Código:

private void cmdPesquisarActionPerformed(java.awt.event.ActionEvent evt) {
/*Aqui tentei colocar varios tipos de códigos para chamar o JPanel e nenhum deles funcionaram =\
*/
}

Ficarei grato pela ajuda!

[]'s a todos os membros do GUJ

Bruno

// aqui vc declara um novo objeto que e o seu "JPainel" obs:fora do metodo
NomeDaClasse nomeDoPainel = new NomeDaClasse();
private void cmdPesquisarActionPerformed(java.awt.event.ActionEvent evt) {
// agora dentro do metodo vc declara o nome do painel e chama o metodo "show();"
nomeDoPainel.show();
} 

Espero que resolva seu problema,
[]s

Leandro,

Inseri o código, compilou sem problemas, mas a janela nem deu sinal de vida.

Vlw…

[quote=bruno_bnr]Leandro,

Inseri o código, compilou sem problemas, mas a janela nem deu sinal de vida.

Vlw…[/quote]

Utilize setVisible(true) no lugar do show.

[]´s

vnsnunes,

Ja utilizei esse metodo “setVisible(true);”, mas não funcionou.

[]'s

Bruno…

Posta aqui o codigo como ficou,
Ai tentamos resolver seu problema…

Fico no aguardo

[]s
leandrosu

Olá Bruno,

Fiquei com uma dúvida sobre o que vocês escreveu. A outra classe que você disse que colocou o JPane, você a fez estendendo uma JFrame? Se sim, o método setVisible(true) deveria funcionar, mas o que está parecendo é que você fez uma classe com um JPane e não o adicionou em um JFrame.

Verifique se o que digo aqui é condizente com a sua situação e poste aqui seus comentários.

Segue o trecho do codigo do JFrame onde o evento ActionPerformed é aguardado pelo clique no botão Pesquisar, esse botão ao clicar devera me trazer uma janela (JPanel - O cogido da classe do JPanel esta no primeiro post)

//Estanciei a classe Pesquisar conforme instruções
Pesquisar janela = new Pesquisar();

private void cmdPesquisarActionPerformed(java.awt.event.ActionEvent evt)
{
//dentro do evento farei o setVisible()
janela.setVisible(true);

//Não funcionou, tirei o setVisible() e coloquei show()
janela.show();

/Tbm não funciou, tirei a instanciação da classe Pesquisar que esta fora
do evento e coloquei dentro do evento, depois coloquei o setVisible(true) "não funcionou, coloquei o show() e tbm nada da janela aparecer.
/

Pesquisar janela = new Pesquisar();

janela.setVisible(true);

janela.show();
}

Me ajudem… Sera que estou vacilando? Estou usando o Netbeans para facilitar, mas pelo jeito esta me deixando com fortes dores de cabeça :?

[]'s

[quote=brothermclaud]Olá Bruno,

Fiquei com uma dúvida sobre o que vocês escreveu. A outra classe que você disse que colocou o JPane, você a fez estendendo uma JFrame? Se sim, o método setVisible(true) deveria funcionar, mas o que está parecendo é que você fez uma classe com um JPane e não o adicionou em um JFrame.

Verifique se o que digo aqui é condizente com a sua situação e poste aqui seus comentários.[/quote]

brothermclaud,

Acredito que o que disse é o caminho para a solução, vou verificar atentamente seus comentarios e retorno.

Vlw

[quote=brothermclaud]Olá Bruno,

Fiquei com uma dúvida sobre o que vocês escreveu. A outra classe que você disse que colocou o JPane, você a fez estendendo uma JFrame? Se sim, o método setVisible(true) deveria funcionar, mas o que está parecendo é que você fez uma classe com um JPane e não o adicionou em um JFrame.

Verifique se o que digo aqui é condizente com a sua situação e poste aqui seus comentários.[/quote]

brothermclaud,

Me ajuda a “add”? Minha Classe principal(JFrame) chama-se CadastroContato e a classe JPanel chama-se Pesquisa. Onde coloco o add? Na principal certo? E ficaria assim?

Pesquisa janela = new Pesquisa();
CadastroContato.add(janela);

[]'s

Olá Bruno,
Uma boa prática de programação é você fazer um método de inicialização dos componentes da sua classe. Todas as IDEs que existem fazem isso. Esse método. geralmente o initComponents() é chamado dentro do método construtor da classe.
Vou postar aqui um exemplo de um JFrame com um painel principal e um botão nesse painel para você ver como é a seqüência de comandos .add:

[code]public class NewJFrame extends javax.swing.JFrame {

//Método construtor da classe NewJFrame
public NewJFrame() {
    initComponents();
}

// Este método é chamado pelo construtor para inicializar o form
private void initComponents() {
    //inicialização das variáveis já declaradas (ver final do código)
    jPanel1 = new javax.swing.JPanel();
    jButton1 = new javax.swing.JButton();

    //seta o layout do JFrame usando o método getContentPane()
    getContentPane().setLayout(null);

    //seta a forma de fechar o JFrame
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
    //seta o Layout do painel principal que será adicionado ao JFrame
    jPanel1.setLayout(null);

    //define o texto do botão que será adicionado ao painel principal
    jButton1.setText("jButton1");

    //adiciona o botão ao painel principal
    jPanel1.add(jButton1);

    //define o posicionamento do botão no painel e suas dimensões
    jButton1.setBounds(0, 0, 73, 23);

    //adiciona o painel principal a JFrame
    getContentPane().add(jPanel1);

    //define o posicionamento do painel principal no JFrame e suas dimensões
    jPanel1.setBounds(0, 0, 100, 100);

    //torna todas as alterações visíveis
    pack();
}

//Método main() da classe
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new NewJFrame().setVisible(true);
        }
    });
}

// Declaração das variáveis dos componentes usados no form
private javax.swing.JButton jButton1;
private javax.swing.JPanel jPanel1;

}[/code]

Espero que isso ajude Bruno. Sucesso para você!!!