Gente como eu faço para um JcomboBox mostrar a chave estrangeira de outra tabela no Formulário do Netbeans e Salvar o resgistro escolhido no Firebird. No momento estou construindo assim e estar mostrando no Jcombobox. Porém não estou conseguindo Salvar no clique do botão. Ai eh onde esta o Problema.
f = objeto que faz a conexão
getRs() = ResultSet que consta na classe conexão sendo chamado no formulario de funcionarios
//-----------------------------------------------------------------------------------------------------------------
public class FDepartamento extends javax.swing.JDialog{
DDepartamento DD = new DDepartamento();
ConexaoFB f = new ConexaoFB(); // responsável pela conecxão
public FDepartamento(java.awt.Frame parent, boolean modal) throws SQLException {
super(parent, modal);
initComponents();
ConexaoFB.Conectar();// responsável pela conecxão
f.executeSQL_DUsuario("select * from Funcionario order by FNVNOME");
try {
while(f.getRs().next()){
JCFuncionario.addItem(f.getRs().getString("FNVNOME"));
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"Erro na visualização do Combox");
}
}//fim da inicialização
private void JBSalvarActionPerformed(java.awt.event.ActionEvent evt) { // acão do botão salvar
Departamento s = new Departamento();
Tratamento_Botoes();
// s.setDPICODG(Integer.parseInt(JTcodigo.getText()));
// s.setDPICGFN(Integer.parseInt(JTFuncionario.getText()));
s.setDPVNOME(JTDepartamento.getText());
s.setDPVSUP(JTSupervisor.getText());
DD.Inserir(s);// Inserir() é o metodo que consta na classe DAO, metodo de inserção dos dados no bd
}
Também é sua obrigação, principalmente como novo usuário, de ler a descrição dos fóruns antes de postar. O assunto do seu tópico pode pertencer aos fóruns de interface gráfica (já que é uma dúvida é de Swing) ou persistência (se a dúvida fosse em ler os dados do banco), mas não ao de Java básico (que envolve geralmente a sintaxe básica da linguagem). Por isso, seu tópico foi movido.
Quanto à sua dúvida em específico: Fica bastante estranho mostrar chaves para o usuários em combos. O ideal é, ao invés de cadastrar Strings na sua combo, cadastrar objetos completos. Você não tem uma classe Funcionario no seu programa? Faça o seguinte:
Sobrescreva o método toString() da classe funcionário para retornar o nome;
Faça um método para carregar os funcionários que você quer colocar na combo, e te retornar um List<Funcionario>();
Preencha suas combos com o funcionario diretamente;
Pronto. Agora sua combo tem funcionários dentro. E funcionários conhecem seu próprio Id. Será possível fazer:
Funcionario f = (Funcionario) combo.getSelectedItem();
new FuncionarioDao().salvar(f);
Também é sua obrigação, principalmente como novo usuário, de ler a descrição dos fóruns antes de postar. O assunto do seu tópico pode pertencer aos fóruns de interface gráfica (já que é uma dúvida é de Swing) ou persistência (se a dúvida fosse em ler os dados do banco), mas não ao de Java básico (que envolve geralmente a sintaxe básica da linguagem). Por isso, seu tópico foi movido.
Quanto à sua dúvida em específico: Fica bastante estranho mostrar chaves para o usuários em combos. O ideal é, ao invés de cadastrar Strings na sua combo, cadastrar objetos completos. Você não tem uma classe Funcionario no seu programa? Faça o seguinte:
Sobrescreva o método toString() da classe funcionário para retornar o nome;
Faça um método para carregar os funcionários que você quer colocar na combo, e te retornar um List<Funcionario>();
Preencha suas combos com o funcionario diretamente;
Pronto. Agora sua combo tem funcionários dentro. E funcionários conhecem seu próprio Id. Será possível fazer:
Funcionario f = (Funcionario) combo.getSelectedItem();
new FuncionarioDao().salvar(f);[/quote]
Vini. Boa noite e me perdoe a demora. Olha eu tenho a classe funcionario sim, só que na tabela Departamento a FK está como Integer e não como String. O problema é na hora do evento do click do botão de salvar, onde se envia a informação para o firebird.
ou seja o jcombo não pode ficar aqui dentro deste metodo não?
Iguais aos outros (jtextfild)?
private void JBSalvarActionPerformed(java.awt.event.ActionEvent evt) { // acão do botão salvar
Departamento s = new Departamento();
Tratamento_Botoes();
// s.setDPICODG(Integer.parseInt(JTcodigo.getText()));
s.setDPVNOME(JTDepartamento.getText());
s.setDPVSUP(JTSupervisor.getText());
DD.Inserir(s);// Inserir() é o metodo que consta na classe DAO, metodo de inserção dos dados no bd