Variáveis retornam null

1 resposta
DoomGuy

Olá senhores. Estou encontrando um problema no código abaixo:

Digito os valores e estou recebendo null.

package Principal;

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import javax.swing.JTextField;

public class AdicionaArmas extends JFrame {
	String nome, nacionalidade, calibre;
	JTextField nom, nacio, cal;
	JLabel l1, l2, l3;
	JButton adiciona = new JButton("Adicionar");

	public void adiciona() {

		l1 = new JLabel("Digite o nome da Arma: ");
		nom = new JTextField();

		l2 = new JLabel("Digite a nacionalidade da Arma");
		nacio = new JTextField();

		l3 = new JLabel("Digite o Calibre");
		cal = new JTextField();
		this.setVisible(true);
		JButton Add = new JButton("Ok");
		Container c = getContentPane();
		c.setLayout(new GridLayout(4, 2));
		c.add(l1);
		c.add(nom);
		c.add(l2);
		c.add(nacio);
		c.add(l3);
		c.add(cal);
		c.add(Add);
		c.add(adiciona);
		c.setSize(3, 2);
		pack();

		Add.addActionListener(new ADDListener());
		adiciona.addActionListener(new adicionaListener());
		c.show();
		
		System.out.println(this.nome+this.calibre+this.nacionalidade);
	}

	public String toString() {
		return "Nome: " + this.nome + " " + " Nacionalidade: "
				+ this.nacionalidade + " " + " Calibre: " + this.calibre;
	}

	public static void main(String[] args) {
		AdicionaArmas AA = new AdicionaArmas();
		AA.adiciona();

	}

	class adicionaListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			nome = nom.getText();
			nacionalidade = nacio.getText();
			calibre = cal.getText();
	
			
			JOptionPane.showMessageDialog(null, "Arma Adicionada!");

		}
	}

	class ADDListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			dispose();

		}

	}

}

A imagem abaixo é para ver como ele aparece.

na linha do
System.out.println(this.nome+this.calibre+this.nacionalidade);
era pra ver o que aparecia no console do eclipse: E a mesma retorna null null null.

O que estou fazendo de errado?

1 Resposta

JoaoBluSCBR

Essa tua declaração

System.out.println(this.nome+this.calibre+this.nacionalidade);

estah no metodo Adiciona. Esse metodo eh disparado do construtor.

Entao na primeira vez que essa declaracao eh executada nao tem nada nessas variaveis.

Só para nao dar o erro, quando inicializar as variaveis, ja coloque valor nelas, assim:

String nome = "", nacionalidade = "", calibre = "";

Mas depois voce vai ter de decidir onde colocar essa declaracao pois ela nao vai ser
executada novamente. Se voce quer esse System coloque ele no metodo do evento
de entrada do botao de cadastramento.

Tua classe toda tá meio truncada. Procure colocar instanciacoes de objetos de tela num
metodo initComponents que seja disparado pelo construtor.

Outras transformacoes que sejam de acoes que devem ocorrer, em metodos como o teu adicionar que sejam disparados a
partir de eventos de botao.

Assim vc separa cada parte da construcao da tua classe. Das funcionalidades que ela terah.

Criado 23 de setembro de 2011
Ultima resposta 23 de set. de 2011
Respostas 1
Participantes 2