Como passar informações de uma JFrame para outra?

Bom galera, sou iniciante. Estou fazendo um trabalho de escola na qual preciso fazer uma calculadora de churrasco, onde damos entrada com a quantidade de homens e mulheres, e colocamos variaveis tipo double com quanto cada pessoa consome de carne, cerveja, suco, agua e frango. Exemplo: homem consome 1.5 de carne, 0.8 de frango e etc. Mulher consome 0.5 de carne… E quanto eu clicar em calcular devo abrir outra jframe informando a quantidade de carne, frango, agua, suco e cerveja que será necessário para a quantidade de pessoas que foi informado. Eu fiz o programa em uma jframe e funcionou. Mas como preciso que o resultado apareça em outra jframe não sei como endereçar o “setText”, por exemplo, se é que isso é possível. Senão é eu gostaria de saber como faço para (eu ja converti os valores double em string para poder usar o settext e colocar no lugar de uma jlabel), colocar a informação no lugar de uma jlabel ou um jtextfield em outra jframe. Grato desde já

Crie um modelo para armazenar os dados com seus respectivos valores do JFrame principal, no JFrame secundário você faz a instância do seu modelo e recupera os dados através dele!

Olá amigo, Primeiramente lhe desejo uma boa tarde!
Bom, Para começar, Gostaria de te explicar como funciona o envio de parâmetros!
Existem vários jeitos de enviar parâmetros de um JFrame para outro, Através do construtor, Através de uma classe separada ou por métodos!

Se for pelo construtor:

public class ex
{

       public ex(TIPO nome-do-parametro)
{

}

}

pode até criar uma String na classe para ficar mais fácil, ficando assim:

public class ex
{

       private String parametro;

       public ex(TIPO nome-do-parametro)
{
        parametro = nome-do-parametro
}

}

por métodos:

public class ex
{

       public ex()
{

}

public void texts(Parametros)
{

}

}

E na classe que vai chama-lá :

public class chamar
{

         //pode chamar no construtor ou em um método aqui dentro

         //para simplificar vou chamar no construtor
        
         public chamar()
{
         new ex().nomedometodo(parametro-a-ser-passado);
}



}

E por fim, por classes

public class ...
{
  ...

   private String conteudo;

public void setConteudo(String conteudo)
{
this.conteudo = conteudo;
}

public String getConteudo()
{
return this.conteudo;
// ou, return conteudo, pois o metodo nao pede nenhum parametro com o mesmo nome das variaveis da classe!
}

}

<img src="/uploads/default/original/3X/a/5/a5bf1d0d13db924e759b93be131c190451fd8ea1.png" width=“625” height=“500”

Segui um tutorial e coloquei essas linhas. acabei conseguindo enviar mas somente um valor. Sou bem leigo pra entender algumas coisas. Como faço pra mandar mais valores?

Uma maneira simples é a utilização setters.

No frame que recebe os valores:

class FrameRecebe{
     //atributos
     private String nome;
     private int idade;
     //setters
     public void setNome(String nome){     
          this.nome = nome;
     }

     public void setIdade(int idade){     
          this.idade = idade;
     }
     //resto do código....
}

Frame que envia os valores:

class FrameEnvia{

    //aqui é evento do botão que chama o outro form
    FrameRecebe f = new FrameRecebe();
    f.setNome("Matheus"); //seta no atributo nome no outro formulário
    f.setIdade(17); //seta o atributo idade no outro formulário
    f.setVisible(true); //
    this.dispose(); //
   

    //resto do código.....
}

Basicamente é isso. Agora que os valores já estão no outro form, você os utiliza da maneira que quiser.

1 curtida

Olá, Na classe receptora, é só colocar vários métodos set e cada método setar uma coisa, ou, você pode pedir, no método recebe, todas as Strings e setar o texto de tudo por ele ! :smiley:
Vou ver se te mando um projeto igual

Consegui! Obrigado