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)