ActionListener pegando outra classe

5 respostas
igorbrites

Olá de novo!!!

Estou com um pequeno probleminha para inserir dados de um jframe no meu db. O Jframe já está pronto e a classe que pega os dados tbm. Eu só não sei como chamar esse método da outra classe no botão do meu JFrame. Gostaria de saber como estruturar meu ActionListener para pegar esses dados. Esse é o código da classe que pega os dados:

public class ContatoDAO {
	private Connection connection;
	public ContatoDAO() throws SQLException{
		this.connection = jdbc.getConnection();
	}
	public void adiciona(Contato contato) throws SQLException{
		PreparedStatement stmt = this.connection.prepareStatement("insert into cadastro(os,cliente,cpf) values (?, ?, ?)");
		stmt.setInt(1, contato.getOs());
		stmt.setString(2, contato.getCliente());
		stmt.setString(3, contato.getCpf());
		stmt.execute();
		stmt.close();
	}
}

Eu quero saber como colocar a função adiciona(Contato contato) (onde ‘Contato’ tem os sets e gets dos campos) no actionListener de outra classe.

Desde já agradeço.

5 Respostas

KIMBA

Não entendi muito bem a dúvida…

Se estiver respondendo asneira, desconsidere…

Normalmente, vc tem duas formas de se fazer isso…

Uma cria um instância da Classe que que vc quer usar o método

Classe classe = new Classe();
classe.metodo();

Ou, na definição do Método, faça ele static, e chama assim

Classe.metodo();

Será que era isso?

igorbrites

Era mais ou menos isso. Só que agora aparece o seguinte:

private JButton getJButton1() {
		if (jButton1 == null) {
			jButton1 = new JButton("salvar");
			jButton1.setBounds(new Rectangle(180, 370, 95, 30));
			jButton1.setText("Salvar");
			jButton1.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					
					try {
						ContatoDAO cont1 = new ContatoDAO();
                     Contato contato = new Contato();
						cont1.adiciona(contato);  // é aqui que eu agarro!!!!!!!
					} catch (SQLException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				
				}
			});
		}
		return jButton1;
	}

Quando eu clico no botão aparece esse erro:

Conectando ao banco

java.sql.SQLException: Column CLIENTE cannot be null

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2926)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)

at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1120)

at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:675)

at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:773)

at cadastro.ContatoDAO.adiciona(ContatoDAO.java:27)

at cadastro.index$1.actionPerformed(index.java:334)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(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)

Eu quero saber oq tô fazendo de errado!!! Por favor me ajudem!!!

Vlw!!!

igorbrites

E outra tbm… é assim que eu faço com que meu jtextfield recupere o dado digitado e lance no meu db?

private JTextField getCliente() {
		if (txtCliente == null) {
			txtCliente = new JTextField(contato.getCliente());
			txtCliente.setBounds(new Rectangle(59, 45, 363, 20));
			txtCliente.getText();
		}
		return txtCliente;
	}

Vlw!!!

B
<blockquote>  try {

ContatoDAO cont1 = new ContatoDAO();

Contato contato = new Contato();

cont1.adiciona(contato);  // é aqui que eu agarro!!!

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}   </blockquote>

O erro é porque você está inserindo um contato sem setar os seus valores…

KIMBA

Sobre o primeiro erro, é o que o colega aí falou, é um erro de SQL

No Codido da sua classe ContatoDAO, vc deve estar mandando uma String para o executeUpdate() não é?
Verifique pelo debug se o comando SQL está correto.

Quanto ao segundo, é mais ou menos assim mesmo.

Eu tenho tenho por pratica, criar um metodo para ler todos os campos de uma vez…

tipo assim:

private boolean lerdados(){
txt1 =  campo1.getText();
txt2 =  campo2.getText();
txt3 =  campo3.getText();

return true;
}

assim, se tiver algum campo vazio ou com dado inconsistente, vc pode tratar!

Criado 21 de janeiro de 2008
Ultima resposta 24 de jan. de 2008
Respostas 5
Participantes 3