Não funciona

1 resposta
R

Olá,
Escrevi o programa abaixo e quando clico no botão “SOMAR”, aparece o seguinte erro no eclipse:

Exception in thread main java.lang.NullPointerException

at Swing15.Monta_Form(Swing15.java:41)

at Swing15.main(Swing15.java:46)

import javax.swing.<em>;

import java.awt.</em>;

import java.awt.event.*;
public class Swing15 extends JFrame  {

private JTextField numero1, numero2;

private JButton btn_somar;
int n1, n2, soma;
Container form;

public void Monta_Form(){
  form = new JFrame("Teste de Eventos");
  form.setLocation(10,10);
  form.setSize(800,600);
  form.setVisible(true);
		
  JLabel rotulo1 = new JLabel("1º número: "); 
  form.add(rotulo1); 
  rotulo1.setBounds(10,5,200,20);
		
  JLabel rotulo2 = new JLabel("2º número: "); 
  form.add(rotulo2); 
  rotulo2.setBounds(10,35,200,20);

  JTextField numero1 = new JTextField("",10);
  form.add(numero1);
  numero1.setBounds(80,5,100,20);
		
  JTextField numero2 = new JTextField("",10);
  form.add(numero2);
  numero2.setBounds(80,35,100,20);
		
  JButton somar = new JButton("SOMAR");
  form.add(somar);
  somar.setBounds(80,70,100,20);

  TrataEdit tratat;
  tratat = new TrataEdit();
  
  btn_somar.addActionListener(tratat);   
  
}

public static void main(String[] args) {
  new Swing15().Monta_Form();

}

private class TrataEdit implements ActionListener {

public void actionPerformed (ActionEvent evento){
	
  if (evento.getActionCommand().equals("SOMAR")) 
      n1= Integer.parseInt(numero1.getText());
      n2= Integer.parseInt(numero2.getText());
      soma=n1+n2;
      JOptionPane.showMessageDialog(null, "você teclou enter" + soma);
   
}

}
}


1 Resposta

L

Tah, três erros ai…

  1. O nullpointer tah dando logo no método monta_form porque vc acessa uma referencia nula (como sempre) nesse ponto:
btn_somar.addActionListener(tratat);

onde vc criou btn_somar?! só tem declarado como atributo da classe…

  1. Você adiciona o ActionListener para o btn_somar (que vc não instancia) mas o que vc adiciona na tela é um outro (uma variavel local):
JButton somar = new JButton("SOMAR");
form.add(somar);
somar.setBounds(80,70,100,20);

tenta trocar isso ai em cima por

btn_somar = new JButton("SOMAR");
		form.add(btn_somar);
		btn_somar.setBounds(80, 70, 100, 20);
  1. Por ultimo, dentro do seu método actionPerformed acessa outros atributos numero1, numero2 que você também não instancia, você adiciona outros objetos (locais criandos dentro de monta_form) na form, logo essas referencias serão nulas mesmo. Então onde esta assim:
JTextField numero1 = new JTextField("", 10);
		form.add(numero1);
		numero1.setBounds(80, 5, 100, 20);

		JTextField numero2 = new JTextField("", 10);
		form.add(numero2);
		numero2.setBounds(80, 35, 100, 20);

vc deixa assim:

numero1 = new JTextField("", 10);
		form.add(numero1);
		numero1.setBounds(80, 5, 100, 20);

		numero2 = new JTextField("", 10);
		form.add(numero2);
		numero2.setBounds(80, 35, 100, 20);

e depois (ou até antes) de tudo, volte a ler um pouco sobre o que são variaveis de classe e locais, o escopo delas, etc

valeu!
:wink:

Criado 3 de maio de 2007
Ultima resposta 3 de mai. de 2007
Respostas 1
Participantes 2