Dúvida com JComboBox e JTextField

Bom estou fazendo uma aplicação para Patrimônios… A dúvida é o seguinte tenho um JComboBox e um jTextFiled que o JComboBox está mostrando as informações do Banco de Dados. O que eu quero é que ao selecionar uma opção do JComboBox no caso o Nome do Setor ele traga o código desse setor em um JTextField. Mas o meu código está trazendo a mesma informação “Nome do Setor” que está no JComboBox… Se alguém tiver alguma idéia eu agradeço :roll:
segue o meu código


  private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
        /***** Preenche o JCombBox com Do Rementete*****/
        try {
            //  String custo = cmbDestino.getSelectedItem().toString();
            ClassConecta conexao = new ClassConecta();
            conexao.conecta();
            Statement stmt = conexao.con.createStatement();
            ResultSet c_custo = stmt.executeQuery("select * from centro_custo order by setor");
            while (c_custo.next() == true) {
  cmbDestino.addItem(c_custo.getString("setor"));
                    //txtCentroCustoOrigem.setText(c_custo.getString("centro_de_custo"));
                cmbDestino.addItemListener(new ItemListener() {
                    public void itemStateChanged(ItemEvent e) {
                        if (e.getStateChange() == ItemEvent.SELECTED) {
                            
                           txtCentroCustoOrigem.setText(""+e.getItem());
                        }
                    }
                });
 }
            c_custo.close();
            stmt.close();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Ocorreu um erro no sistema, se persistir contate o Administrador '" + e + "", "ATENÇÃO", JOptionPane.WARNING_MESSAGE);
        }
 }  

Desde de já agradeço pela ajuda… :slight_smile:

Seu problema, e sua solução, são iguais a esse aqui:
http://www.guj.com.br/posts/list/206283.java#1047721

Só basta trocar a palavra “Visitante” por “Setor” no exemplo que dei nesse tópico. :slight_smile:

Bom gostária de entender sobre o código do link que você passou???

Qual é a dúvida?

Bom mas como ele vai mostrar o resultado de outro campo do Banco de Dados no JTextField, pois ele ja mostrava no JComboBox o resultado do Campo do BD centro_custo, mas gostária de mostrar o código de cada um dos nomes em JTextField

O Modelo para que se tenha uma noção


Você leu o tópico que te passei?

A partir do momento que você cadastrar objetos na sua combo, fica bem fácil pegar o id do objeto selecionado a joga-lo no JTextField.

Bom a forma que “consegui” fazer com que aparece o id
foi deixando o JTextField assim, mas ele não altera o id conforme é selecionado no jComboBox…
txtCentroCustoOrigem.setText(c_custo.getString(“centro_de_custo”));

ahhh outra forma que quase consegui também, mas ele pega o mesmo valor selecionado na JComboBox e mostra no JTextField, mas foi no ItemStateChanged

private void cmbDestinoItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
txtCentroCustoOrigem.setText(cmbDestino.getModel().getSelectedItem().toString());

}

Use a forma que está no link que te passei. O resto, é gambiarra.

Novamente estou com muita dúvida quanto ao JComboBox, pois e fiz conforme o link que você passou… ele lista os registros do Banco no JComboBox, mas a minha dúvida ainda é como mostra o código do registro selecionado no JTetxFild… Segue o que eu fiz!!!

Class Setor

[code]
public class Setor {
private int centro_de_custo;
private String setor;

public Setor(int centro_de_custo, String setor) {
    this.centro_de_custo = centro_de_custo;
    this.setor = setor;
}
public int getId() { return centro_de_custo; }
public String getNome() { return setor; }
public String toString() { return getNome(); }

}[/code]

ao executar o Form

 private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
        /***** Preenche o JCombBox com Do Rementete*****/
 try {
//         String custo = cmbDestino.getSelectedItem().toString();
            ClassConecta conexao = new ClassConecta();
            conexao.conecta();
            Statement stmt = conexao.con.createStatement();
            ResultSet c_custo = stmt.executeQuery("select * from centro_custo where centro_de_custo order by setor");
            while (c_custo.next()) {
                Setor setores = new Setor(
                        c_custo.getInt("centro_de_custo"),
                        c_custo.getString("setor"));
                cmbDestino.addItem(setores);

        //txtCentroCustoOrigem.setText(cmbDestino.getActionCommand().toCharArray().toString());//.getSelectedItem().toString());
 }
            c_custo.close();
            stmt.close();
        }
     catch (Exception erro){
         JOptionPane.showMessageDialog(null,"Erro ao carrega dados no comboBox Visitantes telaCadastroProtocolos: "+ erro);
     }

Desde de já peço desculpa pela amolação e agradeço muito pela sua ajuda!!!

Beleza. Agora você deve registrar um listener para a seleção do seu combobox. E no listener basta fazer:

Setor setor = (Setor) cmbDestino.getSelectedItem(); txtId.setText("" + setor.getId());

Bom desculpa pela minha falta de conhecimento, mas como eu faço isso… pois eu tenho está forma, mas não sei se está correto, pois quando chamo o meu JTextField mostra como erro nesse linha

private void cmbDestinoItemStateChanged(java.awt.event.ItemEvent evt) {
Setor setor = (Setor) cmbDestino.getSelectedItem();
txtCentroCustoOrigem = “” + setor.getId(); // TODO add your handling code here:

}

Troque isso:

txtCentroCustoOrigem = "" + setor.getId();

Por isso:

txtCentroCustoOrigem.setText("" + setor.getId());

Obrigado pela ajuda!!! Deus te Abençoe… Ficou uma maravilha vou postar o código para que alguém possa ter como referência…
:lol:

Class Setor

[code]
public class Setor {
private int centro_de_custo;
private String setor;

public Setor(int centro_de_custo, String setor) {
    this.centro_de_custo = centro_de_custo;
    this.setor = setor;
}
public int getId() { return centro_de_custo; }
public String getNome() { return setor; }
public String toString() { return getNome(); }

}[/code]

Try do JComboBox

 private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
        /***** Preenche o JCombBox *****/

        //////* Esse "Try" é do JComboBox da Origem */////
 try {     
            ClassConecta conexao = new ClassConecta();
            conexao.conecta();
            Statement stmt = conexao.con.createStatement();
            ResultSet c_custo = stmt.executeQuery("select * from centro_custo where centro_de_custo order by setor");
            while (c_custo.next()) {
                Setor setores = new Setor(
                        c_custo.getInt("centro_de_custo"),
                        c_custo.getString("setor"));
                cmbOrigem.addItem(setores);
 }
            c_custo.close();
            stmt.close();
        }
     catch (Exception erro){
         JOptionPane.showMessageDialog(null,"Erro ao carrega dados no comboBox Visitantes telaCadastroProtocolos: "+ erro);
     }
 /*Fim do Try JComboBox Origem*/

Evento do ItemSatate

private void cmbDestinoItemStateChanged(java.awt.event.ItemEvent evt) {                                            

        Setor setorDestino = (Setor) cmbDestino.getSelectedItem();
    txtCentroCustoDestino.setText("" + setorDestino.getId());
      
    }