Capturar o valor de um Combobox

ola, tenho um combobox e queria capturar o valor selecionado nele, como poderia fazer isso?

o valor selecionado será enviado a um banco de dados

obrigado

tava vendo alguma coisa assim :

       String  a = jComboBox1.getSelectedItem().toString();

so q nao funcionó

rafaelviny
Faz assim que funciona

String valor = (String)jTipo.getSelectedItem();

ainda nao funciona =/

rafaelviny
Desse jeito Funciona pelo que eu já fiz nas minhas aplicações.
Qual o Erro Esta aparecendo.

Olá

getSelectedIndex(); retorna o index da combo;
getSelectedItem(); retorna o item da combo;

Se tiver tendo problemas ainda. Você pode mostrar como está adicionando os item que eu tento ajudar.
At+

eu criei um componente COMBO novo assim



import java.sql.Connection;


import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComboBox;


public class MeuCombo extends JComboBox {
    private String sql;
    public  Statement st;
    public  ResultSet rs;
    public  Vector pks = new Vector();
    private Vector vetor = new Vector();
    public MeuCombo(String sql){
        super();
        this.sql = sql;
        setMaximumRowCount(10);
        preenche();
    }
   
    public void preenche(){
        try {
            //aqui colocar o codigo para preenchimento do combo e do vetor.
            Connection con = Conexao.abrirConexao();
            try {
             
                 st = con.createStatement();
                 rs = st.executeQuery(sql);
            } catch (Exception e) {
            }

            while (rs.next()) {
                addItem(rs.getString(2));
                
                pks.addElement(rs.getInt(1));
                pks.get(this.getSelectedIndex());
            }
        } catch (SQLException ex) {
           
        }
        
    }
//PreparedStatement psCombo = con.prepareStatement(sql);
    public void setValue(int chave) {
        
        // buscar no vetor o valor = chave e atribuir como item selecionado no combobox a posicao do vetor
    }
    
    public int getValue() {
       return 0; //pegar o numero do item selecionado no combo, pesquisar no vetor o mesmo numero e retornar o conteudo deste.
        
    }
}

estanciei ele assim

MeuCombo jcEstado = new MeuCombo ("select cod_estado, sigla_estado from estado order by sigla_estado");

e quero q ele capture oq for selecionado e mande os dados junto com esse outros pra tabela cidade

      if (e.getSource()==jbOk){
            Habilita(true);
          // funçoes para inserir uma cidade no cadastro ***********

            String cod_estado = (String)jcEstado.getSelectedItem();
             cidade.setNome(tfNome.getText());
             cidade.setObs_Cid(tfObs.getText());
             cidade.inserirCidade();

esqueci de mencionar, ainda nao sei bem como fazer, mas ele vai ter q carregar todos os dados do banco no combobox e em um vetor os PKs desses dados, para o usuario selecionar o item e inserir no banco a PK

Cara é … entendi certinho o q vc quer.
Vou dar uma dica o comboBox do java num tem como vc colocar tipo chave e valor(como vc falou de pk e nome )por isso eu tenho uma classe aki que é meu comboBox.
Logo eu posto ela pra vc…

Ah uma dica enquanto isso separa as coisas .

Uma coisa é o acesso a base e retorno da coleção dos Estados por exemplo outra coisa é a instância da combo.

vlw :smiley:

/**
 * @author epinheiro - evandropin@gmail.com
 * @author tribeiro - thiago.filadelfo@gmail.com
 *
 */
public class MobileCombo extends JComboBox {

	private static final long serialVersionUID = -5941046491248981373L;
	private Vector<ItemCombo> vectorItemCombo;
	
	public MobileCombo() {
		vectorItemCombo = new Vector<ItemCombo>();
	}
	
	public MobileCombo(Vector<ItemCombo> vectorItemCombo) {
		super(vectorItemCombo);
		this.vectorItemCombo = vectorItemCombo;
	}
	
	public void addItem(ItemCombo itemCombo) {
		super.addItem(itemCombo);
		vectorItemCombo.add(itemCombo);
	}

	public String getSelectedId() {
		return getSelectedItem() != null && ((ItemCombo) getSelectedItem()).getId() != null  
					? String.valueOf(((ItemCombo) getSelectedItem()).getId()) 
					: null;
	}
	
	public void setSelectedId(String id) {
		for (int i = 0; i < vectorItemCombo.size(); i++) {
			ItemCombo itemCombo = vectorItemCombo.get(i);
			if(String.valueOf(itemCombo.getId()).equals(id)) {
				setSelectedIndex(i);
				return;
			}
		}
		setSelectedIndex(0);
	}

	public String getSelectedValue() {
		return getSelectedItem() != null && ((ItemCombo) getSelectedItem()).getValue() != null  
		? ((ItemCombo) getSelectedItem()).getValue() 
		: null;
	}
	
	public void setSelectedValue(String value) {
		for (int i = 0; i < vectorItemCombo.size(); i++) {
			ItemCombo itemCombo = vectorItemCombo.get(i);
			if(itemCombo.getValue().equals(value)) {
				setSelectedIndex(i);
				return;
			}
		}
		setSelectedIndex(0);
	}
	
	public void insertItemAt(ItemCombo itemCombo, int index) {
		super.insertItemAt(itemCombo, index);
	}


	public void removeItem(ItemCombo itemCombo) {
		super.removeItem(itemCombo);
	}
	
	public Vector<ItemCombo> getItem(){
		return vectorItemCombo;
	}
	
	@Override
	public void removeAllItems() {
		vectorItemCombo.removeAllElements();
		super.removeAllItems();
	}
}

este é o item

[code]
/**

  • @author Evandro

  • @author Thiago

  • 02/10/2008
    */
    public class ItemCombo {
    private Integer id;
    private String value;

    public ItemCombo() {}

    public ItemCombo(Integer id, String value) {
    super();
    this.id = id;
    this.value = value;
    }

    public Integer getId() {
    return id;
    }
    public void setId(Integer id) {
    this.id = id;
    }
    public String getValue() {
    return value;
    }
    public void setValue(String value) {
    this.value = value;
    }

    @Override
    public String toString() {
    return value;
    }
    }[/code]

No seu caso agora é só preparar para o retorno da classe de conexão para ser do tipo Vector e blza…
Apanhei no começo tbm para chegar neste combo. Bom at+

Opa!!
AguiaMen, boa rapaz!! Lembro quando nós ficamos fazendo “POG” para tratar
combos no Swing… agora isso fica até mais fácil para manutenção,
depois coloca no blog…

Flwssss

vlw , muito obrigado =D

agora ou entender esse codigo e fazer ele funcionar aqui

abraço

[quote=aguiaMen][code]
/**

*/
public class MobileCombo extends JComboBox {

private static final long serialVersionUID = -5941046491248981373L;
private Vector<ItemCombo> vectorItemCombo;

public MobileCombo() {
	vectorItemCombo = new Vector<ItemCombo>();
}

public MobileCombo(Vector<ItemCombo> vectorItemCombo) {
	super(vectorItemCombo);
	this.vectorItemCombo = vectorItemCombo;
}

public void addItem(ItemCombo itemCombo) {
	super.addItem(itemCombo);
	vectorItemCombo.add(itemCombo);
}

public String getSelectedId() {
	return getSelectedItem() != null && ((ItemCombo) getSelectedItem()).getId() != null  
				? String.valueOf(((ItemCombo) getSelectedItem()).getId()) 
				: null;
}

public void setSelectedId(String id) {
	for (int i = 0; i < vectorItemCombo.size(); i++) {
		ItemCombo itemCombo = vectorItemCombo.get(i);
		if(String.valueOf(itemCombo.getId()).equals(id)) {
			setSelectedIndex(i);
			return;
		}
	}
	setSelectedIndex(0);
}

public String getSelectedValue() {
	return getSelectedItem() != null && ((ItemCombo) getSelectedItem()).getValue() != null  
	? ((ItemCombo) getSelectedItem()).getValue() 
	: null;
}

public void setSelectedValue(String value) {
	for (int i = 0; i < vectorItemCombo.size(); i++) {
		ItemCombo itemCombo = vectorItemCombo.get(i);
		if(itemCombo.getValue().equals(value)) {
			setSelectedIndex(i);
			return;
		}
	}
	setSelectedIndex(0);
}

public void insertItemAt(ItemCombo itemCombo, int index) {
	super.insertItemAt(itemCombo, index);
}


public void removeItem(ItemCombo itemCombo) {
	super.removeItem(itemCombo);
}

public Vector<ItemCombo> getItem(){
	return vectorItemCombo;
}

@Override
public void removeAllItems() {
	vectorItemCombo.removeAllElements();
	super.removeAllItems();
}

}
[/code]

este é o item

[code]
/**

  • @author Evandro - evandropin@gmail.com

  • @author Thiago - thiago.filadelfo@gmail.com

  • 02/10/2008
    */
    public class ItemCombo {
    private Integer id;
    private String value;

    public ItemCombo() {}

    public ItemCombo(Integer id, String value) {
    super();
    this.id = id;
    this.value = value;
    }

    public Integer getId() {
    return id;
    }
    public void setId(Integer id) {
    this.id = id;
    }
    public String getValue() {
    return value;
    }
    public void setValue(String value) {
    this.value = value;
    }

    @Override
    public String toString() {
    return value;
    }
    }[/code]

No seu caso agora é só preparar para o retorno da classe de conexão para ser do tipo Vector e blza…
Apanhei no começo tbm para chegar neste combo. Bom at+[/quote]

Rapaz, vc complicou muito o teu comboBox… podia fazer mais simples, mais ou menos assim…

[code]package combo;

import javax.swing.JComboBox;

public class MobileCombo extends JComboBox {

private static final long serialVersionUID = -5941046491248981322L;

public void setSelectedId(int id) {
	for(int i = 0; i < getItemCount(); i++)
		if(id == ((ObjetoComID)getItemAt(i)).getId())
			setSelectedIndex(i);
}

public int getSelectedId() {
	return ((ObjetoComID)getSelectedItem()).getId();
}

public void setSelectedValor(String valor) {
	for(int i = 0; i < getItemCount(); i++)
		if(valor.equals(((ObjetoComID)getItemAt(i)).getValor()))
			setSelectedIndex(i);
}

public String getSelectedValor() {
	return ((ObjetoComID)getSelectedItem()).getValor();
}

public ObjetoComID getObjetoComID() {
	return (ObjetoComID)getSelectedItem();
}

}[/code]
Daí o objeto assim:

[code]package combo;

public class ObjetoComID implements java.io.Serializable {

private static final long serialVersionUID = 2502964297481251448L;

private int id = 0;
private String valor;

public ObjetoComID() {
	super();
}

public ObjetoComID(int id, String valor) {
	this();
	setId(id);
	setValor(valor);
}

public int getId() {
	return id;
}

public void setId(int id) {
	this.id = id;
}

public String getValor() {
	return valor;
}

public void setValor(String valor) {
	this.valor = valor;
}

}[/code]