Dúvida simples - StackOverFlow

2 respostas
B

Estou iniciando meu desenvolvimento em Java. Possuo uma classe matematica que criei para fins de testes e um jPanel com 1 jLabel e 1 jButton.
Quando pressionado o jButton, ele devera chamar o metodo calculaQuadrado(3) da classe matematica e esta por sua vez deverá modificar o valor Text do jLabel com o resultado. Minha dúvida é: Como faço isso sem causar o StackOverFlow?

tentei instanciar dentro da classe matematica o jFrame e dentro do jFrame a classe matematica. Porém isso deu o StackOverFlow. Percebo que o que eu fiz é errado e gostaria de saber qual a maneira certa de proceder.

class matematica
 {
  void calculaQuadrado(int x)
   {
     int quadrado;
     quadrado=x*x;
     System.out.println("O quadrado de " + x + " é: " + quadrado);
     // jLabel1.setText("O quadrado de " + x + " é: " + quadrado);
   }
}

No jFrame há os seguintes objetos:
-jButton1
-jLabel1

void jButton1_actionPerformed(ActionEvent e)
{

??? Qual codigo devo colocar aqui???
//matematica.calculaQuadrado(3);
 }

Agradeço desde já qualquer ajuda…

Editado por JavaTeco. Por favor, utilize a tag Code para facilitar a visualização. Obrigado.

2 Respostas

J

Seja bem vindo!

Teria como vc postar o código, senão fica dificil de ajudar… blz?

B

Estou colocando duas classes que apresentam o mesmo problema descrito acima. Quando eu instancio a classe testando, ocorre o java.lang.StackOverflowError. Eu já sei o motivo do erro. O que quero descobrir na verade é a melhor solução para que classes distintas acessem os métodos uma das outras.
Assim, gostaria que a classe testando acessasse os métodos da classe mensagem e a classe mensagem acessasse os métodos da classe testando sem causar o StackOverflowError.

Classe mensagem

class mensagem
{
    testando test;
  public mensagem() {
    test = new testando();
  }
  
  public mensagem(testando t) {
    this.test = t;
  }
  
  void imprimeMensagem(int n)
  {
    
    if (n==1){
      System.out.println("Mensagem 1");
    }
    else if (n==2){
      System.out.println("Mensagem 2");
    }
    else {
      System.out.println("Qualquer mensagem");
    }
    //# Aqui está o erro
    //Gostaria que fosse possivel ocorrer test.hahaha()
    test.hahaha();
  }
}

Classe testando

class testando
{
  mensagem mensa;
  public testando() {
    mensa = new mensagem();
  }
  
  public testando(mensagem m) {
    this.mensa = m;
  }
  
  void hahaha()
{
  System.out.println("hahaha");
}

  void imprime()
  {
    //OK aqui eu consigo chamar o metodo imprimeMensagem() do objeto mensa
    mensa.imprimeMensagem(1);
    mensa.imprimeMensagem(2);
    mensa.imprimeMensagem(6);
  }

}

Agradeço a ajuda!

Criado 28 de maio de 2004
Ultima resposta 29 de mai. de 2004
Respostas 2
Participantes 2