Classe Pesquisar Cliente

Tenho uma classe pesquisar cliente, ela esta pesquisando dereitinho, mais na hora de chamar a outra tela para fazer a alteração, da o seguinte erro java.lang.NullPointerException

[code]public class sai extends javax.swing.JDialog {
private JTextField txtpesq;
private JScrollPane jScrollPane1;
private JTable tbp;
ResultSet rs;
DefaultTableModel jTable1Model = new DefaultTableModel();
Object[]data;
public static String nomeCidade;
Said saida;

/**
* Auto-generated main method to display this JDialog
*/
public static void main(String[] args) {
	SwingUtilities.invokeLater(new Runnable() {
		public void run() {
			JFrame frame = new JFrame();
			sai inst = new sai(frame);
			inst.setVisible(true);
		}
	});
}

public sai(JFrame frame) {
	super(frame);
	initGUI();
	dadostable();
}

private void initGUI() {
	try {
		GroupLayout thisLayout = new GroupLayout((JComponent)getContentPane());
		getContentPane().setLayout(thisLayout);
		{
			txtpesq = new JTextField();
		}
		{
			jScrollPane1 = new JScrollPane();
			{
				TableModel tbpModel = 
					new DefaultTableModel(
							new String[][] { { "One", "Two" }, { "Three", "Four" } },
							new String[] { "Column 1", "Column 2" });
				tbp = new JTable();
				jScrollPane1.setViewportView(tbp);
				tbp.setModel(tbpModel);
				tbp.addMouseListener(new MouseAdapter() {
					public void mouseClicked(MouseEvent evt) {
						tbpMouseClicked(evt);
					}
				});
			}
		}
		thisLayout.setVerticalGroup(thisLayout.createSequentialGroup()
			.addContainerGap(19, 19)
			.addComponent(txtpesq, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE)
			.addGap(41)
			.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 123, GroupLayout.PREFERRED_SIZE)
			.addContainerGap(56, Short.MAX_VALUE));
		thisLayout.setHorizontalGroup(thisLayout.createSequentialGroup()
			.addContainerGap()
			.addGroup(thisLayout.createParallelGroup()
			    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
			        .addComponent(txtpesq, GroupLayout.PREFERRED_SIZE, 62, GroupLayout.PREFERRED_SIZE)
			        .addGap(0, 260, Short.MAX_VALUE))
			    .addGroup(GroupLayout.Alignment.LEADING, thisLayout.createSequentialGroup()
			        .addGap(33)
			        .addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 289, GroupLayout.PREFERRED_SIZE)
			        .addGap(0, 0, Short.MAX_VALUE)))
			.addContainerGap(50, 50));
		setSize(400, 300);
	} catch (Exception e) {
		e.printStackTrace();
	}
}
public void PreenchejTable1(String Sql)throws SQLException{// prenche a tabela com as informações do banco de dados, dentro do parentese é um parametro
	
	rs=ConexaoBD.getConexao().executeQuery(Sql);// rs é o resultset ele manipula o resultado no banco de dados e o execute query busca no banco de dados e update atualiza o banco de dados
	jTable1Model=(DefaultTableModel)tbp.getModel();//o model q manipula a tabela
	jTable1Model.setNumRows(0);
	try{
		while(rs.next()){// ele vai rodar o while ate achar resultado
			jTable1Model.addRow(new Object[]{rs.getString("nome"),rs.getString("rua"),}); //object manipula resultados
		}
	}
		catch (SQLException erro){
			JOptionPane.showMessageDialog(null, "erro ao listar na tabela !");

		}
	}
public void dadostable(){
	String Sql="Select * from Cliente";
	try{
		rs=ConexaoBD.getConexao().executeQuery(Sql);
		rs.first();
		PreenchejTable1(Sql);
		}
	catch (SQLException ex){
		JOptionPane.showMessageDialog(null, "erro ao obter proxima cidade !");
}
}
private void pesquisar(){
	String sql="";
	if (txtpesq.getText().length()>0){//vai trazer tudo do banco e vai ordenar por nome
		sql="select * from CLIENTE where upper(NOME) like upper ('"+txtpesq.getText()+"%')order by NOME";
		try {
			rs=ConexaoBD.getConexao().executeQuery(sql);//busca no banco os dados
		}
		catch (SQLException el ){
			el.printStackTrace();
		}
		try {
		if  (rs.next()){
			PreenchejTable1(sql);
		}else{
			LimpaPesquisa();
		}
		}
		catch (SQLException e){
			LimpaPesquisa();
		}
		}
		else{
			LimpaPesquisa();
		}	}	
	
	
		
		private void LimpaPesquisa(){
			jTable1Model.setNumRows(0);
		}
		public void  pegaValor(){
			int row;
			int col = 0;

			try {
				row= tbp.getSelectedRow();
				if (row >= 0){
					Object data=jTable1Model.getValueAt(row, col);
					nomeCidade=data.toString();
					String SQL= "select *from CLIENTE where NOME = '"+nomeCidade+"' " ;
					try {
						rs=ConexaoBD.getConexao().executeQuery(SQL);
						if(rs.first())
						{
							
							   Said.txtnome.setText(rs.getString("NOME"));
							   Said.txtrua.setText(rs.getString("NOME"));
							
							rs.close();
							dispose();
						}
						else{
							JOptionPane.showMessageDialog(null, "Dados incorretos");
						}
					}
					
					catch (RuntimeException e){
						
						e.printStackTrace();
					}
				}
				
			}
			catch (Exception e) {
				nomeCidade ="";
			}


			}
		
		private void tbpMouseClicked(MouseEvent evt) {
			pegaValor();
		}

}
[/code]

Coloca o stacktrace ai e a linha que da o erro, sem isso a gente nao sabe onde pode ta dando NullPointer…

o erro classico de NullPointer da qdo vc ta acessando um objeto e ele nao foi instanciado, ou seja, está nulo

Tem algum objeto que não está sendo instanciado.

Está dando erro na linha 147

Linha 14 não pode ser. Linha 14 deve ser na sua ide, Só copie e cole o código na sua linha 14 pra gente ver.

Vou dar um chute: não está faltando um espaço depois de Object[] na linha 7 não?

Linha 14? não compreendi, coloquei o espaço e não foi, está fazendo a consulta certinho, mais na hora q clico na linha para editar da o erro

Ah, foi mal, li linha 14, não 147. Então o caso é que Said tá vazio cara, tu não deu o new Said() em lugar nenhum no teu código. Ou isso ou txtnome está vazio. Verifique se você atribuiu valor a essas variáveis em outras partes do código.

podia me dar um exemplo?

Vish, agora que eu entendi de verdade.

Primeira coisa: quem criou a classe Said? Porque você não deu

this.saida = new Said(); em parte alguma do seu código?

Em resumo, que classe “Said” é essa afinal? Quem criou e pra que ela serve? Você não está usando objetos da classe que você criou.

Eu poderia sim mostrar o código certo, mas acho que você consegue descobrir com essa dicas que eu dei.

Esse Said é para chamar a tela Saida, pois lah que eu vou fazer a alteração

Coloquei o codigo e ele não chama a tela Saida

Said.txtnome.setText(rs.getString("NOME"));  
Said.txtrua.setText(rs.getString("NOME"));
  1. Ta errado ai em cima, na linha 147, voce ta setando textfields diferentes com o mesmo atributo (NOME). NOME não pode ser igual a RUA.
  2. Tem certeza que a consulta esta retornando dados ? se sim, tem certeza que as colunas nao estao vazia ?
  3. Sete os componentes JTextFields que voce quer recuperar em outro JFrame como ‘static’, exemplo: public static JTextField txtnome;

Abraços.

Cara desculpa, mas, mas nãos e trata de copiar e colar o código. Responda as perguntas que eu fiz. Vejo que você num entendeu ainda que a instância do objeto está faltando, que você está chamando uma propriedade estática, enfim, primeiro pesquise sobre instância de objetos, pra poder entender o que está errado no seu código.

Gente …podemos dizer q isso não era erro, apenas falta de pensar, primeiro tenho q chamar a tela Saida e colocar um botao pesquisar nela para efetuar a alteração… brigadão a todos.

OBS: Creditos para elissonandrade… Valeussss

Aêeee, parabéns, muitos costumam desistir depois de uma dessa, pedem pro amigo fazer, mas que bom que você insistiu ate achar o problema. Se puder, passa o código certinho pra que quem estiver com a mesma dúvida ache uma solução.