Acessando objetos de uma classe ActionListener

2 respostas
R

pessoal, tenho uma classe interna, como podem ver abaixo, que implementa ActionListener. Quando clico no botão que implementa o ActionListener, tento acessar por exemplo o text1 que é uma instância de JTextField da classe principal, acontece java.lang.NullPointerException. Gostaria de saber como posso acessar os demais componentes (por exemplo o text1) sem que aconteça esse erro.

Muito Obrigado.
Ruthenio de A Muniz


package cp10;

import javax.swing.*;

import java.awt.;
import java.awt.event.
;

public class ClassCompare extends JFrame{

private JLabel label1;

private JTextField text1;

private JTextField text2;

private JTextArea outputArea;

private JButton botao;

private Container cont;

public ClassCompare(){
super(“Usar método compareTo()”);

EventHandler handler = new EventHandler(); 
  
  cont = getContentPane();
  cont.setLayout(new FlowLayout());
  
  JTextField text1 = new JTextField(10);
  JTextField text2 = new JTextField(10);
  botao = new JButton("OK");
  
  text1;
  text2;
  botao.addActionListener(handler);
   	  
  cont.add(text1);
  cont.add(text2);
  cont.add(botao);
  
  setSize(275, 300);
  show();

}

private class EventHandler implements ActionListener{

public void actionPerformed(ActionEvent evt){
	if (evt.getSource() == botao){
		
		botao.setText("OK");
		
		text1.setText("a");
					
		if (botao.equals("")){
			JOptionPane.showMessageDialog(null,"Nada consta", "Nada consta", JOptionPane.INFORMATION_MESSAGE);
		}
	}
}

}

public static void main(String args[]){

ClassCompare app = new ClassCompare();

}

}

2 Respostas

T

Dentro do construtor você está criando duas variáveis locais, que também são chamadas text1 e text2, mas não são as variáveis de instância:

JTextField text1 = new JTextField(10);
JTextField text2 = new JTextField(10);

Dessa forma this.text1 e this.text2 continuam null e você recebe um NullPointerException ao tentar acessa-los em:

text1.setText("a");

Outra coisa, pra que serve isso?:

text1;
text2;
R

Muito Obrigado, Tyler. O problema era justamente esse, estava declarando o text1 de novo dentro do construtor.

Valeu

Criado 9 de dezembro de 2004
Ultima resposta 9 de dez. de 2004
Respostas 2
Participantes 2