Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro na chamada de variáveis

Minha classe AcaoBotao não está pegando os valores do construtor. O que poderia estar causando esse erro?

public class AcaoBotao implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {

        ThreadCalculador tarefa = new ThreadCalculador(primeiro, segundo, resultado);
        Thread threadCalculador = new Thread(tarefa);
        threadCalculador.start();

    }

}

public class ThreadCalculador implements Runnable{

    private JTextField primeiro;
    private JTextField segundo;
    private JLabel resultado;


    public ThreadCalculador(JTextField primeiro, JTextField segundo, JLabel resultado) {
        this.primeiro = primeiro;
        this.segundo = segundo;
        this.resultado = resultado;
    }


    @Override
    public void run() {

        long valor1 = Long.parseLong(primeiro.getText());
        long valor2 = Long.parseLong(segundo.getText());
        BigInteger calculo = new BigInteger("0");

        for (int i = 0; i < valor1; i++) {
            for (int j = 0; j < valor2; j++) {
                calculo = calculo.add(new BigInteger("1"));
            }
        }

        resultado.setText(calculo.toString());

    }

}
2 respostas
solução!

Oi Daniel, tudo bem ?

Cara, esses parâmetros que você está passando para o construtor da classe ThreadCalculador, quando você a instancia na classe AcaoBotao, estão vindo de onde ?

Imagino que você não tenha nenhuma referencia para esses parametros.

O que você deve fazer que pode melhorar um pouco isso é você criar um construtor para a classe AcaoBotao e nela você passar esses atributos, já que precisará passar para a ThreadCalculador.

Abraços

Criar o construtor resolveu o problema.

public class AcaoBotao implements ActionListener {

private JTextField primeiro; private JTextField segundo; private JLabel resultado;

public AcaoBotao(JTextField primeiro, JTextField segundo, JLabel resultado) { this.primeiro = primeiro; this.segundo = segundo; this.resultado = resultado; }

@Override public void actionPerformed(ActionEvent e) {

TarefaMultiplicacao tarefa = new TarefaMultiplicacao(primeiro, segundo, resultado); Thread threadCalculo = new Thread(tarefa, "Thread calculador"); threadCalculo.start();

} }

Muito obrigado