Estou tendo um problema com eventos, eu possuo um formulário JFrame(Janela) e dois formlários JPanel(Painel1 e Painel2) e os dois foram adicionados a Janela . A idéia é simples:
1º) Exibir o Painel1 pedindo para o usuário inserir uma palavra, e logo em seguida apertar um botão(“ok”) informando que a palavra foi digitada.
2º) Chamar um método “get” do formulário Painel1, que retorna a palavra digitada.
3º) Deixar Painel1 invisível, passar a palavra como argumento do construtor de Painel2, que informa a palavra digitada e tornar Painel2 visível.
O PROBLEMA: A aplicação não espera o usuário inserir a palavra.
Sendo que o método “get” é executado sem que o usuário tenha inserido a palavra, logo a string que vai ser exibida é “”(nenhuma). Penso que este problema pode ser resolvido travando a execução do programa enquanto o usuário não aperta o botão “ok”. Mas não sei se isso é possível.
Desde já agradeço.
(editei o código e deixei somente as parte que considerei relevantes, estou usando netbeans)
FORMULÁRIO jFRAME(Janela)
package TesteGuiUI;
public class Janela extends javax.swing.JFrame {
    /** Creates new form Janela */
    public Janela() {
        initComponents();
        this.setSize(400,400);
    }
    public void inicio()
    {
        painel1 = new Painel1();
        painel1.setVisible(true);
        add(painel1);
        /************************************************/
        //o programa deveria esperar o usuário entrar com o valor
        /****************************************************/
        
        palavra = painel1.get();//chamada ao método "get"
        painel1.setVisible(false);
        painel2 = new Painel2(palavra);
        painel2.setVisible(true);
        add(painel2);
    }
    .
    .
    .
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                Janela janela = new Janela();
                janela.setVisible(true);
                janela.inicio();
            }
        });
    }
    Painel1 painel1;
    Painel2 painel2;
    String palavra;
    // Variables declaration - do not modify
    // End of variables declaration
}
[b]FORMULÀRIO jPANEL(Painel1)[\b]
package TesteGuiUI;
public class Painel1 extends javax.swing.JPanel {
    /** Creates new form Painel1 */
    public Painel1() {
        initComponents();
        setBounds(0,0,300,300);
    }
   .
   .
   .
    //ONDE O EVENTO DO BOTÃO É TRATADO
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        palavra = jTextField1.getText();
    }                                        
    public String get()//MÉTODO "GET"
    {
         return(palavra);
    }
    String palavra;
    Painel2 painel2;
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   
}
(não coloquei o código do Painel2 pois este apenas exibe a palavra que foi passada como argumento ao seu construtor)