Problemas com set no evento

3 respostas
thiagomartendal

Pessoal, eu tenho uma classe que recebe um número a partir de um clique em um botão. Mas o número não é setado e eu não sei o que fazer.

Número:

public class Numero(){
	private int numero;
	
	public Numero(){
		this.numero = 0;
	}

	public void setNumero(int num){
		this.numero = num;
	}

	public int getNumero(){
		return this.numero;
	}
}

Janela:

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;

public class Janela extends JFrame{
	private Numero num;

	public Janela(){
		this.num = new Numero();
		JButton botao = new JButton("Número");
		botao.addMouseListener(new Clique(this.num));
		this.add(botao);
		imprimir();
	}

	private void imprimir(){
		System.out.println(this.num.getNumero()); //Eu preciso imprimir o número aqui
	}
}

Clique:

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Clique implements MouseListener{
	private Numero num;
	
	public Clique(Numero n){
		this.num = n;
	}
	
	@Override
	public void mouseClicked(MouseEvent e){
		this.num.setNumero(1); //O número tem que ser importado para a classe Numero
	}

	@Override
	public void mousePressed(MouseEvent e){
		
	}

	@Override
	public void mouseReleased(MouseEvent e){
		
	}

	@Override
	public void mouseEntered(MouseEvent e){
		
	}

	@Override
	public void mouseExited(MouseEvent e){
		
	}
}

Inicializador:

public class Inicializador{
	public static void main(String[] args){
		Janela janela = new Janela();

		janela.setVisible(true);
	}
}

3 Respostas

peczenyj

Manda imprimir depois do evento.

Jonas_B_a_r_r_o_s

Na classe Janela você tem uma referencia nula da classe Numero

private Numero num; //referencia ainda nula
   public Janela(){
	this.num = new Numero(); // aqui voce cria o objeto
	JButton botao = new JButton("Número");
	botao.addMouseListener(new Clique(this.num));
	this.add(botao);
	imprimir(); //voce manda imprimir, mas o metodo imprimir tem uma referencia nula de Numero, 
}

Quando você faz
System.out.println(this.num.getNumero());
num é um objeto criado?

peczenyj

sim, criado na primeira linha do construtor.

mas pra mim o problema que ele manda imprimir no construtor. quando o evento no botao acontece a janela ja foi construida. ele teria que mandar imprimir depois ( no mouseClicked por exemplo )

Criado 15 de outubro de 2016
Ultima resposta 16 de out. de 2016
Respostas 3
Participantes 3