Boa Tarde! Estou tendo problemas ao pegar os valores contidos em um JComboBox para cadastrar em uma chave estrangeira! Sempre estou tendo o erro java.lang.ClassCastException. Segue o código dos métodos usados:
Método no FuncionarioDAO
BotaoUsuarioCadastrar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Usuario u = new Usuario();
String senha, csenha;
senha = TxtSenhaUsuario.getText();
csenha = TxtConfirmaSenhaUsuario.getText();
if (senha.equals(csenha))
{
Funcionario f = (Funcionario) ComboNomeUsuario.getSelectedItem();
u.setLoginUsuario(TxtUsuario.getText());
u.setSenhaUsuario(TxtSenhaUsuario.getText());
u.setFuncionarioUsuario(f);
try
{
if (ucont.Cadastrar(u))
{
JOptionPane.showMessageDialog(PainelUsuarios, "Cadastrado com Sucesso!", "Cadastro" , JOptionPane.INFORMATION_MESSAGE);
}
}
catch (Exception ex){
JOptionPane.showMessageDialog(PainelUsuarios, "Erro: " + ex.toString(), "Ops!", JOptionPane.ERROR_MESSAGE);
}
}
else
{
JOptionPane.showMessageDialog(PainelUsuarios, "As senhas não batem!", "Ops", JOptionPane.ERROR_MESSAGE);
}
}
});
public ArrayList ConsultaFuncionario () throws Exception{
PreparedStatement ps = null;
ResultSet rs = null;
try{
con = ConnectionFactory.getConnection();
String sql = "select * FROM tbl_funcionario";
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
ArrayList listafuncionario = new ArrayList();
while(rs.next())
{
listafuncionario.add(rs.getString("id_funcionario") + " - " + rs.getString("nome_funcionario") + " " + rs.getString("sobrenome_funcionario"));
}
return listafuncionario;
} catch (Exception e) {
throw new Exception("Erro ao buscar os dados para o cadastro de Usuários! " + e.toString());
}
finally
{
ConnectionFactory.CloseConnection(con, ps, rs);
}
}
Método no UsuarioDAO:
public void Salvar (Usuario u) throws Exception{
PreparedStatement ps = null;
if (u == null)
{
throw new Exception("Erro: Usuario não pode ser nulo!");
}
try {
String sql = "insert into tbl_usuario (id_usuario, login_usuario, senha_usuario, fk_funcionario, flag_ativo)"
+ "values (NEXTVAL('sequencia_usuario'),?,?,?,1)";
ps = this.con.prepareStatement(sql);
ps.setString(1, u.getLoginUsuario());
ps.setString(2, u.getSenhaUsuario());
ps.setInt(3, u.getFuncionarioUsuario().getIdFuncionário());
ps.executeUpdate();
ps.close();
} catch (Exception e) {
throw new Exception("Erro ao inserir os dados!" + e.getMessage());
}
finally{
ConnectionFactory.CloseConnection(con, ps);
}
}
Getters e Setters do Funcionario:
public class Funcionario {
private int IdFuncionário;
private String NomeFuncionario;
private String SobrenomeFuncionario;
private String CpfFuncionario;
private String RgFuncionario;
private String EmailFuncionario;
private TelefoneFisico TelefoneFuncionario;
private EnderecoFisico EnderecoFuncionario;
private Usuario UsuarioFuncionario;
private int FlagUsuario;
public int getIdFuncionário() {
return IdFuncionário;
}
public void setIdFuncionário(int IdFuncionário) {
this.IdFuncionário = IdFuncionário;
}
public String getNomeFuncionario() {
return NomeFuncionario;
}
public void setNomeFuncionario(String NomeFuncionario) {
this.NomeFuncionario = NomeFuncionario;
}
public String getSobrenomeFuncionario() {
return SobrenomeFuncionario;
}
public void setSobrenomeFuncionario(String SobrenomeFuncionario) {
this.SobrenomeFuncionario = SobrenomeFuncionario;
}
public String getCpfFuncionario() {
return CpfFuncionario;
}
public void setCpfFuncionario(String CpfFuncionario) {
this.CpfFuncionario = CpfFuncionario;
}
public String getRgFuncionario() {
return RgFuncionario;
}
public void setRgFuncionario(String RgFuncionario) {
this.RgFuncionario = RgFuncionario;
}
public String getEmailFuncionario() {
return EmailFuncionario;
}
public void setEmailFuncionario(String EmailFuncionario) {
this.EmailFuncionario = EmailFuncionario;
}
public TelefoneFisico getTelefoneFuncionario() {
return TelefoneFuncionario;
}
public void setTelefoneFuncionario(TelefoneFisico TelefoneFuncionario) {
this.TelefoneFuncionario = TelefoneFuncionario;
}
public EnderecoFisico getEnderecoFuncionario() {
return EnderecoFuncionario;
}
public void setEnderecoFuncionario(EnderecoFisico EnderecoFuncionario) {
this.EnderecoFuncionario = EnderecoFuncionario;
}
public Usuario getUsuarioFuncionario() {
return UsuarioFuncionario;
}
public void setUsuarioFuncionario(Usuario UsuarioFuncionario) {
this.UsuarioFuncionario = UsuarioFuncionario;
}
public int getFlagUsuario() {
return FlagUsuario;
}
public void setFlagUsuario(int FlagUsuario) {
this.FlagUsuario = FlagUsuario;
}
@Override
public String toString()
{
return NomeFuncionario;
}
public String toString2()
{
return SobrenomeFuncionario;
}
}
Getters e Setters do Usuaio:
public void Salvar (Usuario u) throws Exception{
PreparedStatement ps = null;
if (u == null)
{
throw new Exception("Erro: Usuario não pode ser nulo!");
}
try {
String sql = "insert into tbl_usuario (id_usuario, login_usuario, senha_usuario, fk_funcionario, flag_ativo)"
+ "values (NEXTVAL('sequencia_usuario'),?,?,?,1)";
ps = this.con.prepareStatement(sql);
ps.setString(1, u.getLoginUsuario());
ps.setString(2, u.getSenhaUsuario());
ps.setInt(3, u.getFuncionarioUsuario().getIdFuncionário());
ps.executeUpdate();
ps.close();
} catch (Exception e) {
throw new Exception("Erro ao inserir os dados!" + e.getMessage());
}
finally{
ConnectionFactory.CloseConnection(con, ps);
}
}
Método de preenchimento do ComboBox (eu chamo ele no construtor)
private void AddFunconarioCombo () throws Exception
{
FuncionarioDAO fdao = new FuncionarioDAO();
ComboNomeUsuario.removeAllItems();
ArrayList listafuncionario = fdao.ConsultaFuncionario();
Iterator it = listafuncionario.iterator();
while(it.hasNext())
{
ComboNomeUsuario.addItem((it.next()));
}
ComboNomeUsuario.updateUI();
}
Método no actionListener do Botão de cadastrar o Usuario:
BotaoUsuarioCadastrar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Usuario u = new Usuario();
String senha, csenha;
senha = TxtSenhaUsuario.getText();
csenha = TxtConfirmaSenhaUsuario.getText();
if (senha.equals(csenha))
{ Funcionario f = (Funcionario) ComboNomeUsuario.getSelectedItem();
u.setLoginUsuario(TxtUsuario.getText());
u.setSenhaUsuario(TxtSenhaUsuario.getText());
u.setFuncionarioUsuario(f);
try
{
if (ucont.Cadastrar(u))
{
JOptionPane.showMessageDialog(PainelUsuarios, "Cadastrado com Sucesso!", "Cadastro" , JOptionPane.INFORMATION_MESSAGE);
}
}
catch (Exception ex){
JOptionPane.showMessageDialog(PainelUsuarios, "Erro: " + ex.toString(), "Ops!", JOptionPane.ERROR_MESSAGE);
}
}
else
{
JOptionPane.showMessageDialog(PainelUsuarios, "As senhas não batem!", "Ops", JOptionPane.ERROR_MESSAGE);
}
}
});
pilha de erros:
Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: java.lang.String cannot be cast to model.Funcionario
at view.TelaDeCadastro$22.actionPerformed(TelaDeCadastro.java:1504)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Os dados são inseridos no ComBoBox normalmente, mas na hora de usar essses dados para cadastrar usuários, ele me dá esse erro!
Dese já agradeço a atenção!