Gostaria de saber como carregar uma ComboBox com uma Query que tenha duas colunas onde uma é o “código identificador” do registro e a outra um campo string.
Por exemplo, uma tabela “Cidade” onde tem as colunas “codigo_identificador” e “nome_cidade”.
Eu quero que na combo mostre o “nome da cidade” e guarde o código identificador do registro selecionado para carregar um outro combo box que dependente deste código identificador para ser carregado.
O que eu quero fazer é igual o que se faz com HTML.:
Exemplo:
<select name=“select2” >
<option value=“6”>São Paulo</option>
<option value=“12”>Rio de Janeiro</option>
<option value=“14”>Bahia</option>
<option value=“20”>Rio Grande do Sul</option>
</select>
Eu quero fazer a mesma coisa só que em Java, eu quero armazenar o value do item selecionado, será que não tem nenhuma propriedade do JComboBox que armazene isto?
Pra fazer isso , acho que tu deve aprimorar tua Combo
No meu caso, eu criei um Hashmap e , os valores adicionei na combo. Criei o método para adicionar o valor e chave, e na hora de pegar ( get(x) ) eu pego o valor que ta selecionado, busco na minha lista o valor chave respectivo e devolvo…
Deve ter um modo mais inteligente… mas foi isso que eu fiz aqui, e ta dando certo
Como é que eu uso o “ComboBoxModel”, alguém tem algum exemplo pra enviar.
De preferência usando uma query.
Obrigada. [/quote]
Seguinte… :roll:
Implementar o modelo da combobox, significa que vc vai implementar o modo como a combobox vai armazenar deus dados, como ela vai trabalhar e exibir.
Entao, na hora de implementar seu modelo, pense somente em como guardar e o que mostrar na sua combo. Por isso separe o que é guardar e o que é alimentar.
Vou postar um exemplo bem rustico de como extender o modelo ja existente ( pra nao ter mto trabalho nos listeners ) assim, vc somente sobrpoe os métodos utilizados para trabalhar com o conteudo da combo.
[code]import java.util.ArrayList;
/**
*
@author Bruno
*/
public class MyComboModel extends javax.swing.DefaultComboBoxModel {
private ArrayList lista = null;
private Object itemSelecionado = null;
/** Creates a new instance of MyComboModel */
public MyComboModel() {
super();
}
public Object getElementAt(int index) {
return getLista().get(index);
}
public Object getSelectedItem() {
return itemSelecionado;
}
public int getSize() {
return getLista().size();
}
public void setSelectedItem(Object anItem) {
itemSelecionado = anItem;
}
private ArrayList getLista(){
if( lista == null ){
lista = new ArrayList();
}
return lista;
}
public void addElement(Object anObject){
getLista().add(anObject);
}
}[/code]
Essa classe nada mais faz do que guardar os dados da sua combo no vetor: e o item atualmente selecionado num objeto.
Pra usar é só:
JComboBox combo = new JComboBox(new MyComboModel());
Digamos que o combobox esteja em uma interface HTML, e foi selecionado “São Paulo” e passado como parametro para uma outra pagina por um submit em formulario (post).
Gostaria de saber como eu faço para recuperar o valor (6) e não o nome da cidade (São Paulo).
Alguém tem algum exemplo, algum link ou nome do método que devo usar?
Eu já procurei no guj, no google! Talvez eu só não tenha procurado com as palavras certas, mas eu não achei.
[quote=neoramon]Digamos que o combobox esteja em uma interface HTML, e foi selecionado “São Paulo” e passado como parametro para uma outra pagina por um submit em formulario (post).
Gostaria de saber como eu faço para recuperar o valor (6) e não o nome da cidade (São Paulo).
Alguém tem algum exemplo, algum link ou nome do método que devo usar?
Eu já procurei no guj, no google! Talvez eu só não tenha procurado com as palavras certas, mas eu não achei.[/quote]
//Implementação de um model para popular um model do JComboBox com uma coluna de uma tabela (Código de alguma coisa por exemplo).
//ATENCAO!!! A melhor maneira de fazer isso seria com representação de dados no seu model. No caso utilizando Beans… Más para estudos, podemos fazer assim:
view plaincopy to clipboardprint?
/*
To change this template, choose Tools | Templates
and open the template in the editor.
*/
package ServerSide;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.swing.ComboBoxModel;
import javax.swing.event.ListDataListener;
/**
*
* @author Vinicius
*/
view plaincopy to clipboardprint?
public class MyBoxModel implements ComboBoxModel{
ArrayList<String> data = new ArrayList();
String selected_item = null;
public MyBoxModel(){
try{
Connection con = null; //Pega sua conexão aqui
PreparedStatement stm = con.prepareStatement("SEU SELECT"); //Esse select deve trazer apenas uma coluna para facilitar.(coluna q vai no Combobox)
ResultSet rs = stm.executeQuery();
while(rs.next()){
data.add(rs.getString("NOME DA COLUNA")); //adiciona no arraylist todos os itens selecionados
}
try{
//tenta selecionar o primeiro item do array
selected_item = data.get(0);
}catch(Exception ex){
ex.printStackTrace();
}
}catch(Exception e){
e.printStackTrace();
//trate sua exeção
}
}
public void setSelectedItem(Object anItem) {
selected_item = data.get(data.indexOf(anItem));
}
public Object getSelectedItem() {
return selected_item;
}
public int getSize() {
return data.size();
}
public Object getElementAt(int index) {
return data.get(index);
}
public void addListDataListener(ListDataListener l) {
//TO DO NOTHING
}
public void removeListDataListener(ListDataListener l) {
//TO DO NOTHING
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ServerSide;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.swing.ComboBoxModel;
import javax.swing.event.ListDataListener;
/**
*
* @author Vinicius
*/
public class MyBoxModel implements ComboBoxModel{
ArrayList<String> data = new ArrayList();
String selected_item = null;
public MyBoxModel(){
try{
Connection con = null; //Pega sua conexão aqui
PreparedStatement stm = con.prepareStatement("SEU SELECT"); //Esse select deve trazer apenas uma coluna para facilitar.(coluna q vai no Combobox)
ResultSet rs = stm.executeQuery();
while(rs.next()){
data.add(rs.getString("NOME DA COLUNA")); //adiciona no arraylist todos os itens selecionados
}
try{
//tenta selecionar o primeiro item do array
selected_item = data.get(0);
}catch(Exception ex){
ex.printStackTrace();
}
}catch(Exception e){
e.printStackTrace();
//trate sua exeção
}
}
public void setSelectedItem(Object anItem) {
selected_item = data.get(data.indexOf(anItem));
}
public Object getSelectedItem() {
return selected_item;
}
public int getSize() {
return data.size();
}
public Object getElementAt(int index) {
return data.get(index);
}
public void addListDataListener(ListDataListener l) {
//TO DO NOTHING
}
public void removeListDataListener(ListDataListener l) {
//TO DO NOTHING
}
}
Como utilizar?
view plaincopy to clipboardprint?
JComboBox box = new JComboBox(new MyBoxModel());
JComboBox box = new JComboBox(new MyBoxModel());
Como pegar o item selecionado?
view plaincopy to clipboardprint?
String t = (String)box.getSelectedItem();
String t = (String)box.getSelectedItem();
//Agora você pode brincar com os construtores do seu ComboBoxModel… passando por exemplo um select como parametro… Um ArrayList pronto…etc