Encadeamento de Codigo[RESOLVIDO]

6 respostas
L

Pessoal boa noite, tenho o seguinte problema…
Tenho uma tela e nesta tela em um estante x eu chamo uma outra tela ai vem o problema, supondo que tenho tela x e tela y fica o seguinte.

execuntando tela x

chamo tela y, e a tela y preenche dados que utilizarei no processamento da tela x
fechou a tela y

volto a executar a tela x

precisava de algo procedural, não sei se fui claro, tenho que ir para segunda tela e nao posso continuar a executar a primeira pois ela precisa de elementos que serão setados pela segunda tela. Pensei em duas formas, claro ineficientes pois sou iniciante…

while(true){

if(segundaTelaFechar){
...........

break;
}

}

Porem ficaria perdendo processamento, e o outro geito seria que o código na tela inicial só continua-se quando a tela chama fecha-se.
Se alguém puder ajudar agradeço…

6 Respostas

Vinny

Cara usa os famosos metodos getters e setters

Quando vc fechar a tela y vc seta todos os valores que vc precisa usar na tela x, e dentro da Classe da tela x vc usa os metodos get para pega os valores.

Exemplo:
Classe Y

public class ClasseY{
  
   String valor1 = "";  

  public void setValor_1(String valor1){
        this.valor1 = valor1;
  }

  public String getValor_1(){
       return this.valor1;
  }

   addWindowListener(new java.awt.event.WindowAdapter() {
           public void windowClosing(java.awt.event.WindowEvent evt) {
               formWindowClosing(evt);
           }
   });

  private void formWindowClosing(java.awt.event.WindowEvent evt) {
           setValor_1(txtValor1.getText());
  }

 {....}

}

Classe X

//Chamada da tela Y
   ClasseY y = new ClasseY();
   y.setLocationRelativeTo(this);
   y.setSize(800,600);
   y.setModal();
   y.setVisible();
//O código a partir daqui só sera executado depois que a tela Y for fechada, então é aqui que vc vai pegar os valores da tela Y
//Agora é simples

 txtSeuCampoTextoDaTelaX.setText(y.getValor_1());

//Simples assim, faça isso para todos os valores que vc quer pegar de uma tela para outra

Bom ta bem detalhado ai uma solução, espero que te ajude.

orobsonpires
luivilella:
Pessoal boa noite, tenho o seguinte problema... Tenho uma tela e nesta tela em um estante x eu chamo uma outra tela ai vem o problema, supondo que tenho tela x e tela y fica o seguinte.

execuntando tela x

chamo tela y, e a tela y preenche dados que utilizarei no processamento da tela x
fechou a tela y

volto a executar a tela x

precisava de algo procedural, não sei se fui claro, tenho que ir para segunda tela e nao posso continuar a executar a primeira pois ela precisa de elementos que serão setados pela segunda tela. Pensei em duas formas, claro ineficientes pois sou iniciante...
while(true){

if(segundaTelaFechar){
...........

break;
}

}
Porem ficaria perdendo processamento, e o outro geito seria que o código na tela inicial só continua-se quando a tela chama fecha-se. Se alguém puder ajudar agradeço..

Oi,

Pelo o que eu entendi, você quer ter acesso a atributos de uma telaX dentro de uma telaY... Você pode passar a telaX como parâmetro no construtor da segunda tela, assim poderia ter acesso aos atributos da telaX dentro da telaY. EX:
public class TelaY {
TelaX telax;

public TelaY(TelaX telaX) {
     this.telaX = telaX;
}

...

}
L

Amigo Vinny , muito obrigado pela ajuda… então é quase isto… o que você me passou não parou o código.
Tipo assim to fazendo assim.

public class Form1 extends javax.swing.JFrame {

System.out.println("Vou chamar");
Form2 f2 = new Form2();
f2.setVisible(true);
//Aqui só deveria executar quando o f2 fosse fechado
System.out.println("Passou pelo f2");
// daqui para baixo eu precisaria fazer testes com os valores que são setados pelo form2
if(Teste.numeroDeTeste == 1){
.....
}

}
public class Teste {
	
	public static Integer numeroDeTeste;
	
	
}

public class Form2 extends javax.swing.JFrame {


// to processando .... ai blz em algum evento 

Teste.numeroDeTeste = 1;


}

Então estou tentando utilizar os métodos que você me passou porem não esta parando. ou seja ao mesmo tempo que a tela 2 esta aperta no console esta todos os prints…

Eu precisava de algo como um JOptionPane.showConfirmDialog(arg0, arg1), porem um que eu possa editar colocar campos… montar uma tela…
Ou mesmo o modal do JSF…

Vinny

Então só esta faltando uma coisa ali no seu código depois da linha do comando:

Form2 f2 = new Form2();

Antes do setVisible, coloque este comando aqui:

f2.setModal(true);

este comando impede que vc volta para a tela 1 antes que vc feche a tela 2, sendo assim, todo codigo que vem depois do setVisible(true) só vai ser executado depois que o f2 for fechado

L

Amigo Vinny, exatamente o que eu precisava.
Muito Obrigado… Muito Obrigado Mesmo!!!..

Vinny

Opa de nada, é sempre bom estar ajudando alguém.
Agora só muda o Nome do Post, coloca [RESOLVIDO] la no titulo, caso algém esteja passando pela mesma dificuldade que vc passo, este post poderar ajudar!

Abraço :smiley:

Criado 17 de maio de 2011
Ultima resposta 18 de mai. de 2011
Respostas 6
Participantes 3