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: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
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: :slight_smile:](https://www.guj.com.br/images/emoji/twitter/slight_smile.png?v=9)
Bom gostária de entender sobre o código do link que você passou???
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());
}