Capturar o valor de um Combobox

15 respostas
rafaelviny

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

15 Respostas

rafaelviny

tava vendo alguma coisa assim :

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

so q nao funcionó

H

rafaelviny
Faz assim que funciona

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

rafaelviny

ainda nao funciona =/

H

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

aguiaMen

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+

rafaelviny

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();
rafaelviny

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

aguiaMen

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…

aguiaMen

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.

rafaelviny

vlw :smiley:

aguiaMen
/**
 * @author epinheiro - [email removido]
 * @author tribeiro - [email removido]
 *
 */
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
/**
 * @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;
	}
}

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+

doug

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

rafaelviny

vlw , muito obrigado =D

agora ou entender esse codigo e fazer ele funcionar aqui

abraço

aguiaMen
aguiaMen:
/**
 * @author epinheiro - [email removido]
 * @author tribeiro - [email removido]
 *
 */
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
/**
 * @author Evandro - [email removido]
 * @author Thiago - [email removido]
 * 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;
	}
}

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+

Gobain

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

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();
	}
}
Daí o objeto assim:
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;
	}
}
Criado 2 de outubro de 2008
Ultima resposta 2 de out. de 2008
Respostas 15
Participantes 5