Java Jtextfield conexãoBB - Quem achar o erro ganhar um doce

7 respostas
A

Olá pessoal.. meu codigo está dando erro e não sei ql é.. consegue me ajudar?
O erro que aparece em vermelho no eclipse é esse:
java.lang.reflect.InvocationTargetExceptionIWAV0052E Invocation Target Exception creating CadastroFornecedor

[color=red] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.eclipse.ve.internal.java.vce.launcher.remotevm.JFCLauncher$1.run(JFCLauncher.java:59)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at CadastroFornecedor.getSalvCadFornecedor(CadastroFornecedor.java:296)
at CadastroFornecedor.getJContentPane(CadastroFornecedor.java:220)
at CadastroFornecedor.initialize(CadastroFornecedor.java:92)
at CadastroFornecedor.(CadastroFornecedor.java:88)
... 13 more[/color]

codigo é o seguinte:
public class ProgramaEnigMais extends JFrame {
		private JButton DirecionarCadastro = null;

	private JButton getDirecionarCadastro() {
		if (DirecionarCadastro == null) {
			DirecionarCadastro = new JButton();
			DirecionarCadastro.setBounds(new Rectangle(100, 8, 90, 30));
			DirecionarCadastro.setText("Cadastro");
		}
		return DirecionarCadastro;

	public static void main(String args[]) {
		ProgramaEnigMais app = new ProgramaEnigMais();
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			try{
				Connection conexao = FabricaConexao.getConexao();
				if(conexao != null){
					System.out.println("Conexão estabelecida!");
				}
				else{
					System.out.println("Erro ao conectar!");
				}
			conexao.close();
		} catch (SQLException e) {
				e.printStackTrace();
			}	
		}

	public ProgramaEnigMais() {
		super();
		initialize();
		setLayout(null);
		DirecionarCadastro.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Caixa.jPanel.setVisible(false);
				Estoque.jPanel.setVisible(false);
				Cadastro.getJPanel();
				Cadastro.jPanel.setVisible(true);
				Cadastro.jPanel.setBounds(new Rectangle(0, 82, 1233, 629));
			}
		});
		setSize(1250, 750);
		setVisible(true);
	}
}


////// AKI FINALIZA A CLASSE ProgramaEnigMais (OBS. TEM OUTRAS COISAS NO CODGO QUE NÃO ESTÁ RELACIONADO)/////

public class Cadastro extends JPanel {

	private static final long serialVersionUID = 1L;
	static JPanel jPanel = null;
	private static JLabel TituloCadastro = null;
	private static JButton DirecionarFornecedor = null;

	public Cadastro() {
		super();
		initialize();
		DirecionarFornecedor.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				CadastroFornecedor cadasfor = new CadastroFornecedor();
				cadasfor.setVisible(true); 
			}
		});
	}
	private void initialize() {
		this.setLayout(null);
		this.setBounds(new Rectangle(0, 0, 1233, 750));
		this.add(getJPanel(), null);
	}

	static public JPanel getJPanel() {
		if (jPanel == null) {
			TituloCadastro = new JLabel();
			TituloCadastro.setText("Cadastro");
			TituloCadastro.setFont(new Font("Dialog", Font.BOLD, 24));
			TituloCadastro.setBounds(new Rectangle(2, 1, 105, 40));

			jPanel = new JPanel();
			jPanel.setLayout(null);
			jPanel.setBounds(new Rectangle(0, 82, 1233, 667));
			jPanel.setBackground(SystemColor.activeCaption);
			jPanel.setVisible(true);
			jPanel.add(TituloCadastro, null);
			jPanel.add(getDirecionarFornecedor(), null);
		}
		return jPanel;
}
	private static JButton getDirecionarFornecedor() {
		if (DirecionarFornecedor == null) {
			DirecionarFornecedor = new JButton();
			DirecionarFornecedor.setBounds(new Rectangle(14, 68, 128, 34));
			DirecionarFornecedor.setText("Fornecedor");
		}
		return DirecionarFornecedor;
	}
}

////// AKI FINALIZA A CLASSE Cadastro/////

public class CadastroFornecedor extends JFrame {
	private static JLabel NomeFornecedor = null;
	private static JTextField NomeFornecedorCampo = null;
	private static JButton SalvCadFornecedor = null;
	
	public CadastroFornecedor() {
		super();
		initialize();
	}

	private void initialize() {
		this.setContentPane(getJContentPane());
		this.setTitle("Cadastro de Fornecedores");
		this.setIconImage(Toolkit.getDefaultToolkit().getImage(
				"D:/Programa EnigMais/EstudandoJava/Imagens/Simbolo sem fundo2.png"));
		this.setBounds(new Rectangle(0, 0, 600, 580));
	}
	static JPanel getJContentPane() {
		if (jContentPane == null) {
			NomeFornecedor = new JLabel();
			NomeFornecedor.setBounds(new Rectangle(105, 71, 109, 18));
			NomeFornecedor.setFont(new Font("Dialog", Font.BOLD, 11));
			NomeFornecedor.setText("Nome/Razão Social:");
			jContentPane.add(NomeFornecedor, null);
			jContentPane.add(getNomeFornecedorCampo(), null);
			jContentPane.add(getFecharSemSalvCadFornecedor(), null);
		}
		return jContentPane;
	}
	
	private static JButton getSalvCadFornecedor() {
		if (SalvCadFornecedor == null) {
			SalvCadFornecedor = new JButton();
			SalvCadFornecedor.setBounds(new Rectangle(289, 430, 141, 24));
			SalvCadFornecedor.setText("Salvar/Fechar");
			try{
				CadastroFornecedor fornecedor = new CadastroFornecedor();
				CadastroFornecedorDAO dao = new CadastroFornecedorDAO();
				
				fornecedor.setName(NomeFornecedorCampo.getText());//Acho que o erro está aki <<<
				
				dao.adiciona(fornecedor);
				
				System.out.println("Gravado");
			} catch (SQLException e){
				e.printStackTrace();
			}
		}
		return SalvCadFornecedor;
	}
	private static JTextField getNomeFornecedorCampo() {
		if (NomeFornecedorCampo == null) {
			NomeFornecedorCampo = new JTextField();
			NomeFornecedorCampo.setBounds(new Rectangle(215, 71, 198, 18));
		}
		return NomeFornecedorCampo;
	}
}
////// AKI FINALIZA A CLASSE CadastroFornecedor (OBS. TEM OUTRAS COISAS NO CODGO QUE NÃO ESTÁ RELACIONADO)/////

public class CadastroFornecedorDAO {
	private Connection conexao;

	public CadastroFornecedorDAO() throws SQLException {
		this.conexao = FabricaConexao.getConexao();
	}
	public void adiciona(CadastroFornecedor fornecedor) throws SQLException {
		PreparedStatement stmt = (PreparedStatement) this.conexao
				.prepareStatement("insert into fornecedor (nomefornecedor) values (?)");
		stmt.setString(1, fornecedor.getName()); // nome
		stmt.execute();
		stmt.close();
	}
}
////// AKI FINALIZA A CLASSE CadastroFornecedorDAO /////

package ConexaoBB;

public class FabricaConexao {
	
	private static final String URL_CONEXAO = "jdbc:mysql://localhost:3306/EnigMaisBancoDDados";
	private static final String USUARIO = "root";
	private static final String SENHA = "senhacorreta";
	
	public static Connection getConexao()throws SQLException{
		try{
			Class.forName("com.mysql.jdbc.Driver");
			return DriverManager.getConnection(URL_CONEXAO, USUARIO, SENHA);
		}
		catch (ClassNotFoundException e){
			throw new SQLException(e.getMessage());
		}
	}
}
////// AKI FINALIZA A CLASSE FabricaConexao /////

No Banco de dados MySql com o seguinte historico:
- use enigmaisbancoddados
- CREATE TABLE fornecedor (id bigint not null auto_increment,nome varchar (255))
- CREATE TABLE fornecedor (idfornecedor bigint not null auto_increment,nomefornecedor varchar (255), PRIMARY KEY (IDFORNECEDOR))
- SELECT * FROM `enigmaisbancoddados`.`fornecedor`
- create database cadastro
- use cadastro
- CREATE TABLE `cadastro` (
- `codigo` int(10) unsigned NOT NULL auto_increment,
- `nome` varchar(60) NOT NULL default '',
- PRIMARY KEY (`codigo`)
)

7 Respostas

jweibe

Abner David da Silva Tole veja o seu erro!

Caused by: java.lang.NullPointerException
at CadastroFornecedor.getSalvCadFornecedor(CadastroFornecedor.java:296)

Verifique seu método getSalvCadFornecedor.

A

Esse é o meu método getSalvCadFornecedor. >

private static JButton getSalvCadFornecedor() {   
        if (SalvCadFornecedor == null) {   
            SalvCadFornecedor = new JButton();   
            SalvCadFornecedor.setBounds(new Rectangle(289, 430, 141, 24));   
            SalvCadFornecedor.setText("Salvar/Fechar");   
            try{   
                CadastroFornecedor fornecedor = new CadastroFornecedor();   
                CadastroFornecedorDAO dao = new CadastroFornecedorDAO();   
                   
                fornecedor.setName(NomeFornecedorCampo.getText());//Acho que o erro está aki <<<   
                   
                dao.adiciona(fornecedor);   
                   
                System.out.println("Gravado");   
            } catch (SQLException e){   
                e.printStackTrace();   
            }   
        }   
        return SalvCadFornecedor;   
    }

como deveria ser?

jweibe

Cara vai debugando seu código que fica mais fácil de vc encontrar o erro.
Coloca um ponto de interrupção aki:

CadastroFornecedor fornecedor = new CadastroFornecedor();

verifica se ta tudo ok,

fornecedor.setName(NomeFornecedorCampo.getText());

verifica se foi setado o valor corretamente,

dao.adiciona(fornecedor);

e depois se foi gravado!

Ahh, e ai invéz de vc colocar:

fornecedor.setName(NomeFornecedorCampo.getText());

por

fornecedor.setName(getNomeFornecedorCampo().getText());
A

Quando eu substitui

fornecedor.setName(NomeFornecedorCampo.getText());//aki

por

fornecedor.setName(getNomeFornecedorCampo().getText());

resolveu!

mas qndo eu acesso o banco de dados… a informação salva foi:

idfornecedor = 1 e nomefornecedor = frame0

sendo que eu tinha colocado EnigMais no nomefornecedor.

O que será?

jweibe

Cara mais cadê o seu evento pra pegar o clique no botão pra gravar os dados.?
Dessa forma que ta ai, quando tu classe rodar vai ler esse método e gravar os dados do fornecedor sem pegar o que vc digitou
no seu textfield.
Tenta algo como:

private static JButton getSalvCadFornecedor() {     
         if (SalvCadFornecedor == null) {     
             SalvCadFornecedor = new JButton();     
             SalvCadFornecedor.setBounds(new Rectangle(289, 430, 141, 24));     
             SalvCadFornecedor.setText("Salvar/Fechar");     
             SalvCadFornecedor.addActionListener(new java.awt.event.ActionListener() {
                  public void actionPerformed(java.awt.event.ActionEvent evt) {
                          try{     
                                  CadastroFornecedor fornecedor = new CadastroFornecedor();     
                                  CadastroFornecedorDAO dao = new CadastroFornecedorDAO();     
                      
                                   fornecedor.setName(getNomeFornecedorCampo().getText());//Acho que o erro está aki <<<     
                      
                                  dao.adiciona(fornecedor);     
                      
                                  System.out.println("Gravado");     
                            } catch (SQLException e){     
                                      e.printStackTrace();     
                            }
                  }
            });     
         }     
         return SalvCadFornecedor;     
   }
A

Parabéns cara… vc é mto bom!
vc ganhou um doce.
=]

Mas serio… ajudou d+… brigadão!

jweibe

Ta valendo cara, que bom que coseguiu resolver o problema!
Não esquece de colocar [ RESOLVIDO ].
Flw

Criado 30 de abril de 2011
Ultima resposta 30 de abr. de 2011
Respostas 7
Participantes 2