Ajuda!

Olá pessoal! Eu novamente! =P

Segue meu código, ele está dando um erro de Exception.
Ele compila bonitinho, mas na hora de rodar =/ .

Contato, Relatorio e ManipulaArquivo são classes que isoladamentes estao funcionando.

Desde já agradecido.
Att.

import java.awt.*;
import java.awt.event.*; 
import java.io.*; /*Arquivos*/
import java.io.Serializable;
import javax.swing.*;
import javax.swing.JMenuBar;
import java.util.*; /*HashTable*/
import java.util.Hashtable; /*HashTable*/
import java.lang.*;
import java.lang.String;
 
public class Agenda extends JFrame{
	
// ### DECLARACAO DOS OBJETOS ######################################   
  
	//Container
	private Container ctnJanelaPrincipal;
	private BorderLayout bdrLayout;
		    
    //Diversos
    Object objSimNao[] = {"Sim","Não"};
	
	
    /*****************************************************/  
    //Cria a Hashtable
    public Hashtable tblHasAgenda = new Hashtable();
   
    //Cria o objeto ManipulaArquivo
    public ManipulaArquivo manArqAgenda = new ManipulaArquivo();
    
    //Cria enumeration
    Enumeration enuTblHasAgenda;
    
    //Strings de manipulacao da Hashtable
    String strChave, strConteudo;    
    	
    public String strListaResultados[];	
    /*****************************************************/	
	
	
	
	   
	//Barra de menu
	private JMenuBar menBarBarraMenu = new JMenuBar();
	private JMenu menMenu = new JMenu( "Arquivo" );
	private JMenuItem menIteAtualizarRegistro = new JMenuItem( "Atualizar Registro" );
	private JMenuItem menIteSair = new JMenuItem( "Sair" );
	
	//Outros componentes [visuais]
	private JLabel lblTitulo = new JLabel( "Agenda Telefônica - TES01" );
	private JLabel lblResultado = new JLabel( "Nomes encontrados: " );
	private JLabel lblConsulta = new JLabel( "Nome a ser pesquisado: " );
	private JLabel lblNome = new JLabel( "Nome: " );
	private JLabel lblTelefonePessoal = new JLabel( "Telefone Pessoal: " );
	private JLabel lblTelefoneComercial = new JLabel( "Telefone Comercial: " );
	private JLabel lblEmail = new JLabel( "E-mail: " );
	
	private JTextField txtFldNome = new JTextField(20);
	private JTextField txtFldTelefonePessoal = new JTextField(20);
	private JTextField txtFldTelefoneComercial = new JTextField(20);	
	private JTextField txtFldEmail = new JTextField(20);
	
	private JTextField txtFldConsulta = new JTextField(26);
	private JList lstResultadoConsulta; /* = new JList();*/
	
//	private JButton btnPesquisar = new JButton( "Pesquisar" );	
	private JButton btnInserirContato = new JButton( "Inserir" );
	private JButton btnAlterarContato = new JButton( "Alterar" );
	private JButton btnExcluirContato = new JButton( "Excluir" );
	private JButton btnListarContato = new JButton( "Listar" );		
	private JButton btnSair = new JButton( "Sair" );	
	

	private JPanel pnlNortePai = new JPanel();
	 private JPanel pnlNorteN = new JPanel();
	 private JPanel pnlNorteC = new JPanel();	
	 private JPanel pnlNorteS = new JPanel();	
	private JPanel pnlCentro = new JPanel();	
	private JPanel pnlOestePai = new JPanel();
	 private JPanel pnlOesteN = new JPanel();
	 private JPanel pnlOesteC = new JPanel();	 
	private JPanel pnlSulPai = new JPanel();
	 private JPanel pnlSulN = new JPanel();
	 private JPanel pnlSulC = new JPanel();	
	  private JPanel pnlSulCc = new JPanel();
	  private JPanel pnlSulCe = new JPanel();   
   
   
// ### DECLARACAO DOS OBJETOS ######################################   
    

// ### DECLARACAO CONSTRUTOR @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    
    public Agenda(){
		//Layout principal
		super( "Agenda Telefônica" );
		ctnJanelaPrincipal = getContentPane();
		bdrLayout = new BorderLayout(7,7);
		ctnJanelaPrincipal.setLayout( bdrLayout );	


    	//Faz a leitura dos dados no inicio do programa
    	manArqAgenda.leDados(tblHasAgenda);    


		//Seta Menu
		menMenu.add(menIteAtualizarRegistro);
		menMenu.add(menIteSair);
		menBarBarraMenu.add(menMenu);	
		setJMenuBar(menBarBarraMenu); /*Seta menu para aparecer na JanelaPrincipal*/

		//Seta Objetos
		//Norte
		pnlNortePai.setLayout( new BorderLayout(5,5) );		  
		  pnlNorteN.setLayout( new FlowLayout() );
		    pnlNorteN.add( new JLabel("") );		  
	      pnlNorteC.setLayout( new FlowLayout() );
		    pnlNorteC.add(lblTitulo);			
		  pnlNorteS.setLayout( new FlowLayout() );
		    pnlNorteS.add( new JLabel("") );
		pnlNortePai.add(pnlNorteN, BorderLayout.NORTH);
		pnlNortePai.add(pnlNorteC, BorderLayout.CENTER);
		pnlNortePai.add(pnlNorteS, BorderLayout.SOUTH);

		//Centro
		pnlCentro.setLayout( new GridLayout(9,1) );
		  pnlCentro.add(lblNome);
		  pnlCentro.add(txtFldNome);	
		  pnlCentro.add( new JLabel("") );
		  pnlCentro.add(lblTelefonePessoal);
		  pnlCentro.add(txtFldTelefonePessoal);		  
		  pnlCentro.add(lblTelefoneComercial);
		  pnlCentro.add(txtFldTelefoneComercial);		  
		  pnlCentro.add(lblEmail);
		  pnlCentro.add(txtFldEmail);		
		
		//Oeste
		pnlOestePai.setLayout( new BorderLayout(5,5) );
		  pnlOesteN.setLayout( new GridLayout(4,1) );
		    pnlOesteN.add(lblConsulta);
		    pnlOesteN.add(txtFldConsulta);
		    pnlOesteN.add( new JLabel("") );
		    pnlOesteN.add(lblResultado);
		  pnlOesteC.setLayout( new GridLayout(1,1) );
		  	pnlOesteC.add(lstResultadoConsulta);
		pnlOestePai.add(pnlOesteN, BorderLayout.NORTH);
		pnlOestePai.add(pnlOesteC, BorderLayout.CENTER);				
	
		//Sul
		pnlSulPai.setLayout( new BorderLayout(5,5) );
		  pnlSulN.setLayout( new FlowLayout() );
		    pnlSulN.add( new JLabel("") );		  
		  pnlSulC.setLayout( new BorderLayout(5,5) );
		    pnlSulCc.setLayout( new FlowLayout() );
		      pnlSulCc.add(btnInserirContato);
			  pnlSulCc.add(btnAlterarContato);	  
			  pnlSulCc.add(btnExcluirContato);
			  pnlSulCc.add(btnListarContato);
			pnlSulCe.setLayout( new FlowLayout() );
		  	  pnlSulCe.add(btnSair);
		  pnlSulC.add(pnlSulCc, BorderLayout.WEST);
		  pnlSulC.add(pnlSulCe, BorderLayout.EAST);		  	  
		pnlSulPai.add(pnlSulN, BorderLayout.NORTH);
		pnlSulPai.add(pnlSulC, BorderLayout.CENTER);


		//Trata os ouvintes do eventos
		BtnOuvinte ouvinteBtn = new BtnOuvinte();
		btnInserirContato.addActionListener( ouvinteBtn );
		btnAlterarContato.addActionListener( ouvinteBtn );
		btnExcluirContato.addActionListener( ouvinteBtn );
		btnListarContato.addActionListener( ouvinteBtn );
		btnSair.addActionListener( ouvinteBtn );
		
		TxtFldOuvinte ouvinteTxtFld = new TxtFldOuvinte();
		txtFldConsulta.addKeyListener( ouvinteTxtFld );  


		ctnJanelaPrincipal.add(pnlNortePai, BorderLayout.NORTH);
		ctnJanelaPrincipal.add(pnlCentro, BorderLayout.CENTER);
		ctnJanelaPrincipal.add(pnlOestePai, BorderLayout.WEST);
		ctnJanelaPrincipal.add(pnlSulPai, BorderLayout.SOUTH);		
    	
		//Seta apresentacao
		setSize(600,360);
		setLocationRelativeTo(null);
		setResizable(false);		
		show();  
			

    }
        
// ### DECLARACAO CONSTRUTOR @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
//#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*    
//#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*
    
    
// ### DECLARACAO CLASSES INTERNAS *********************************
	
	
	//Classe interna para tratamento de ouvintes (TxtFields)
	public class TxtFldOuvinte implements KeyListener {
      public void keyPressed( KeyEvent evento){
      	
      	//coloca o(s) caractere(s) fornecidos pelo usuario na String strConsulta
      	String strConsulta = evento.getKeyText(evento.getKeyCode());
      	      	
      	//Cria string e objetos que recebera informacoes da tabela
      	int TAM = tblHasAgenda.size();
      	int j = 0;      	
      	int TAMConsulta = strConsulta.length();
      	
      	String strResultado = "";
      	Contato cntContatos = new Contato();
      	
    	//Manipula Tabelahash
    	enuTblHasAgenda = tblHasAgenda.keys();
    	
    	while (enuTblHasAgenda.hasMoreElements()) {
    		
    		strChave = enuTblHasAgenda.nextElement().toString();
    		cntContatos = (Contato)tblHasAgenda.get(strChave);
    		
    		strResultado += cntContatos.getNome();
    		for( int i = 0; i < strResultado.length(); i++ ){
    			
    			if(strResultado.substring( i, (TAMConsulta+i)).equals(strConsulta)){
    				strListaResultados[j] = strResultado;
    				j++;
    			} 			    			    		
    		}
    		strResultado = " ";
		}     	
      	
      	//Coloca valores na JList
      	lstResultadoConsulta = new JList(strListaResultados);
      	lstResultadoConsulta.setVisibleRowCount(5);
      }
      
       public void keyReleased ( KeyEvent evento){
/*       	
       	//coloca o(s) caractere(s) fornecidos pelo usuario na String strConsulta
      	String strConsulta = evento.getKeyText(evento.getKeyCode());
      	      	
      	//Cria string e objetos que recebera informacoes da tabela
      	int TAM = tblHasAgenda.size();
      	int j = 0;      	
      	int TAMConsulta = strConsulta.length();
      	
      	String strResultado = "";
      	Contato cntContatos = new Contato();
      	
    	//Manipula Tabelahash
    	enuTblHasAgenda = tblHasAgenda.keys();
    	
    	while (enuTblHasAgenda.hasMoreElements()) {
    		
    		strChave = enuTblHasAgenda.nextElement().toString();
    		cntContatos = (Contato)tblHasAgenda.get(strChave);
    		
    		strResultado += cntContatos.getNome();
    		for( int i = 0; i < strResultado.length(); i++ ){
    			
    			if(strResultado.substring( i, (TAMConsulta+i)).equals(strConsulta)){
    				strListaResultados[j] = strResultado;
    				j++;
    			} 			    			    		
    		}
    		strResultado = " ";
		}     	
      	
      	//Coloca valores na JList
      	lstResultadoConsulta = new JList(strListaResultados);
      	lstResultadoConsulta.setVisibleRowCount(5);
       	
*/       	
       }
       
       public void keyTyped( KeyEvent evento){
       	
       }
      
	}
	
	
	
		
	//Classe interna para tratamento de ouvintes (Botoes)
	private class BtnOuvinte implements ActionListener {
      public void actionPerformed( ActionEvent evento ) {
      	
      	if( evento.getSource() == btnInserirContato ) //INSERIR CONTATO
      	{
      		if(txtFldNome.getText().trim().equals("") ||
      		   txtFldTelefonePessoal.getText().trim().equals("") ||
      		   txtFldTelefoneComercial.getText().trim().equals("") ||
      		   txtFldEmail.getText().trim().equals("")) {
      		   	
      		   	JOptionPane.showMessageDialog(null, "Nenhum campo pode estar vazio.",
      		   	"Dados Inválidos", JOptionPane.ERROR_MESSAGE);
      		   	
      		   	//coloca cursor em nome
      		   	txtFldNome.requestFocus();      			
      		}
      		else if(tblHasAgenda.containsKey(txtFldTelefonePessoal.toString())){
      			JOptionPane.showMessageDialog(null,
      			"Ja existe um contato proprietario deste numero de telefone\nPor favor, insira outro numero ou coloque este como Comercial",
      			"Chave já existente", JOptionPane.ERROR_MESSAGE);
      			
      			//coloca cursor em telefone pessoal
				txtFldTelefonePessoal.requestFocus();      			
      		}
      		else{
      			Contato cntContato = new Contato(txtFldNome.toString(),
      			txtFldTelefonePessoal.toString(),
      			txtFldTelefoneComercial.toString(),
      			txtFldEmail.toString());
      			
      			//Grava o objeto da Classe Contato na tabela hash
				tblHasAgenda.put(cntContato.getTelefonePessoal(), cntContato);
				
				//Informa sucesso
				JOptionPane.showMessageDialog(null,
				"Registro Inserido com sucesso!", "Inclusão de Registro",
				JOptionPane.INFORMATION_MESSAGE);
				
				//limpa os campos e seta o cursor no nome
				txtFldNome.setText("");
				txtFldTelefonePessoal.setText("");
				txtFldTelefoneComercial.setText("");
				txtFldEmail.setText("");
				
				txtFldNome.requestFocus();
      		}      			
      			
      	}
/*      
      	if( evento.getSource() == btnAlterarContato ) //ALTERAR CONTATO
      	{
      		if(txtFldNome.getText().trim().equals("") ||
      		   txtFldTelefonePessoal.getText().trim().equals("") ||
      		   txtFldTelefoneComercial.getText().trim().equals("") ||
      		   txtFldEmail.getText().trim().equals("")) {
      		   	
      		   	JOptionPane.showMessageDialog(null, "Nenhum campo pode estar vazio.",
      		   	"Dados Inválidos", JOptionPane.ERROR_MESSAGE);
      		   	
      		   	txtFldNome.requestFocus();
      			
      		}      		
      	}    

      	if( evento.getSource() == btnExcluirContato ) //EXCLUIR CONTATO
      	{
      		if(txtFldNome.getText().trim().equals("") ||
      		   txtFldTelefonePessoal.getText().trim().equals("") ||
      		   txtFldTelefoneComercial.getText().trim().equals("") ||
      		   txtFldEmail.getText().trim().equals("")) {
      		   	
      		   	JOptionPane.showMessageDialog(null, "Nenhum campo pode estar vazio.",
      		   	"Dados Inválidos", JOptionPane.ERROR_MESSAGE);
      		   	
      		   	txtFldNome.requestFocus();
      			
      		}      		
      	}    
*/      		
      	if( evento.getSource() == btnListarContato ) //LISTAR CONTATOS
      	{
      		String listagem = " ";
      		listagem += "Nome                Telefone Pessoal    Telefone Comercial   E-mail              \n\n";
      		Font fonte;
      		fonte = new Font("Courier", Font.PLAIN, 12);
      		
      		//Manipula Tabelahash
    		enuTblHasAgenda = tblHasAgenda.keys();
    	
    		while (enuTblHasAgenda.hasMoreElements()) {
    		
    			strChave = enuTblHasAgenda.nextElement().toString();
    			strConteudo = tblHasAgenda.get(strChave).toString();
    		
    			listagem += " "; // margem esquerda
    			listagem += strChave+" "; // telefone pessoal
    			listagem += strConteudo.substring(  0, 20 )+"  "; // nome
    			listagem += strConteudo.substring( 21, 40 )+"  "; // telefone comercial
    			listagem += strConteudo.substring( 41, 60 )+"  "; // e-mail    			
			}

			Relatorio relatorio1 = new Relatorio();
			relatorio1.criaRelatorio( "Listagem dos dados cadastrados", listagem, 810, 300 );     		
      	}      		  	

      	if( evento.getSource() == btnSair) //SAIR
      	{
      		int i = JOptionPane.showOptionDialog(null, "Deseja sair do programa e salvar os dados em disco?",
      		"Confirmação de saída", JOptionPane.YES_NO_OPTION,
      		JOptionPane.QUESTION_MESSAGE, null, objSimNao, objSimNao[0]);
      		if (i == JOptionPane.YES_OPTION) {
      			//Faz a gravacao dos dados na saida do programa
      			manArqAgenda.gravaDados(tblHasAgenda);
      		
      			//Encerra o programa
      			System.exit(0);      			
      		}
      		else{
      			txtFldConsulta.requestFocus();
      		}
      	}      			
      
      }
	}
	
	
// ### DECLARACAO CLASSES INTERNAS *********************************
    
    
    
    
    
// ### DECLARACAO DE MAIN ##########################################    
    public static void main(String[] args) {
    	

    	Agenda objAgenda = new Agenda();
    	objAgenda.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	   	
    }
}

posta o stack trace que ajuda e muito…olhar seu código todo dá um pouco de trabalho…

Amigo vc pode me explicar o porque desses 2 linhas no seu codigo:

import java.lang.*; import java.lang.String;

vlws

Sim, nos diga qual é a exception, fica mais fácil.

Então…
importei aquelas classes pra garantir =P

Vai o Exception

Exception in thread “main” java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1031)
at java.awt.Container.add(Container.java:352)
at Agenda.(Agenda.java:153)
at Agenda.main(Agenda.java:471)

Process completed.


Ahh… “stack trace” é o erro?

Abraços!

Certeza que essa é a classe inteira do Agenda?

O stacktrace te disse qual exception e onde em seu código. Agora vá em seu código e veja se é necessário fazer o tratamento, caso seja esperado um valor nulo naquela linha, ou então veja se não tem nada errado antes que causou o null pointer.

consegui!!!

Obrigado gurizada!!!
Valeu!

[quote]Então…
importei aquelas classes pra garantir =P [/quote]

Então se vc estivesse desenvolvendo um sistema que utilizasse varias classes vc iria garantir a importação de todas elas certo?

flws