Combobox

20 respostas
B

Ola pessoal, to com um probleminha em trazer dados para meu combobox veja so minha real situacao

//VARIAVEL CAMPOS ARMAZENA TUDO QUE TEM NA MINHA TABLE DO BANCO "CAMPO"
campos = controlC.buscaOsCampos();   
  
String[] campo = new String[campos.size()];   
        for (int i = 0; i < campos.size(); i++) {   
            campo[i] = ((CBean) campos.get(i)).getCampoA(); // a duvida vem aqui!!!!   
        }
        //TENHO 2 JCOMBOBOX   
        jcb_campoA.setModel(new DefaultComboBoxModel(campo));   
        jcb_campoB.setModel(new DefaultComboBoxModel(campo));

O PROBLEMA EH O SEGUINTE: tenho 2 combobox que precisa carregar conteudo de 2 tabelas do meu banco de dados, na variavel campos ja trago tudo que tem nos 2 campos mas precisava dar o getCampoA + o getCampoB para carregar no combobox os conteudo mas nao to conseguindo oq devo fazer?
tentei isso

for (int i = 0; i < campos.size(); i++) {   
            campo[i] = ((CBean) campos.get(i)).getCampoA() + ((CBean) campos.get(i)).getCampoB(); // para fazer a variavel campo dar o getCampoA e getCampoB mas nao da para usar o sinal de + entao creio que deva ter otra solucao para isso.
        }

alguem ajuda uma iniciante ;``` ? obrigada

20 Respostas

malucocelo

O que exatamente é esse ‘CBean’(que você tá usando no cast)?

B

CBean = clientebean e controlC eh a control dos clientes

malucocelo

getCampoA e getCampoB retornam String? Se retornar era para reconhecer o ‘+’, caso não retorne você pode tentar algo assim:

campo = getCampoA + " " + getCampoB ou campo = getCampoA.toString() + getCampoB.toString()

Fernando_Generoso_da

biluquinha,

Antes de quebrar a cabeça fazendo esses tipos de operação, dá uma olhada nesse tutorial, em Combo Box:

http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html

Especialmente na implementação de um ComboBoxModel específico, ListCellRenderer e ComboBoxEditor. Assim, tu guarda em um ComboBoxModel específico implementado por você, uma lista de Objetos do tipo que você quiser, e quando for pegar o conteúdo selecionado no combobox, tu obtém teu objeto, com todas as informações necessárias.

Espero ter ajudado!!

Fernando Rosa

B

sao strings sim veja so, tentei desse jeito mas n deu certo

campo[i] = ((CBean) campos.get(i)).getCampoA() + "teste";

e no jcombobox que era pra trazer todos camposA + o campo"teste" ele traz assim

[email removido]

entao creio que essa solucao que vcx me falou nao dara certo pq invez de ele inserir em outra linha ele junta tudo!

Fernando_Generoso_da

Como deveria ficar?? isso tah meio confuso…com assim trazer todo o campoA???

B

tipo eu ja pegai a listagem das 2 tabelas q preciso do campoA e campoB, mas eu preciso que no combobox apareca o conteudo entao precso percorrer

for (int i = 0; i < campos.size(); i++) {     
            campo[i] = ((CBean) campos.get(i)).getCampoA(); // a duvida vem aqui!!!!     
        }

o campoA e o campoB para poder inserir no meu combobox! meu combobox precisa ter o conteudo do campoA e campoB da minha tabela!

malucocelo

Olá Biluquinha, se o que eu entendi agora você que seu combobox fique ± assim:

textoCampoA
textoCampoB
textoCampoA
textoCampoB
(etc.)

se for isso mesmo a solução pode ser a seguinte:

for (int i = 0; i < campos.size(); i+2) {     
           try{
              campo[i] = ((CBean) campos.get(i)).getCampoA();
              campo[i+1] = ((CBean) campos.get(i)).getCampoB();
           }catch(Exception e){
               //não faz nada
           }
        }

Mas, se for isso mesmo que eu entendi, você poderia colocar tudo em uma lista só e então percorrê-la, teria que ver só o que teria maior custo…

Fernando_Generoso_da

Vamos lá…

Você tem:

Campo A                 Campo B
---------------           ----------------------
valor 1 campo a       valor 1 campo b
valor 2 campo a       valor 2 campo b
valor 3 campo a       valor 3 campo b
valor 4 campo a       valor 4 campo b
valor 5 campo a       valor 5 campo b

você quer um combo box que traga:

valor 1 campo a       
valor 2 campo a       
valor 3 campo a       
valor 4 campo a       
valor 5 campo a       
valor 1 campo b
valor 2 campo b
valor 3 campo b
valor 4 campo b
valor 5 campo b

ou que traga como texto:

valor 1 campo a  -  valor 1 campo b
valor 2 campo a  -  valor 2 campo b
valor 3 campo a  -  valor 3 campo b
valor 4 campo a  -  valor 4 campo b
valor 5 campo a  -  valor 5 campo b

???

lina

Oi,

Pegando o bonde andando…
e se você fizer.:

for (int i = 0; i < campos.size(); i++) { campo[i] = ((CBean) campos.get(i)).getCampoA().concat(campos.get(i)).getCampoB()); // a duvida vem aqui!!!! }

Tchauzin!

B

Fernando

valor 1 campo a         
valor 2 campo a         
valor 3 campo a         
valor 4 campo a         
valor 5 campo a         
valor 1 campo b   
valor 2 campo b   
valor 3 campo b   
valor 4 campo b   
valor 5 campo b

assim

B

Lina, tentei sua solucao mas veja so uso o netbeans

campo[i] = ((CBean) campos.get(i)).getCampoA().concat(campos.get(i)).(aqui ele fica sem sugestao) 
e nao consigo por isso =>  getCampoB());
Fernando_Generoso_da

Tenta assim:

campo[i] = ((CBean) campos.get(i)).getCampoA().concat(((CBean) campos.get(i)).getCampoB());
Fernando_Generoso_da

biluquinha:
Fernando

valor 1 campo a         
valor 2 campo a         
valor 3 campo a         
valor 4 campo a         
valor 5 campo a         
valor 1 campo b   
valor 2 campo b   
valor 3 campo b   
valor 4 campo b   
valor 5 campo b

assim

Mas então pq vc está tentando concatenar campoA + campoB?? dessa forma, tu faz um for na tua lista de dados e vai adicionando no Combobox…

B

Fernando deixei assim

e dei

jcb_campoA.setModel(new DefaultComboBoxModel(campo)); jcb.campoB.setModel(new DefaultComboBoxModel(campo));

mas nos 2 combobox aparece apenas o que tem no campoB e nada do campoA

Fernando_Generoso_da

olha…

esse código

está dentro de um for, certo???

faz o debug, ou colca no código os prints dentro do for abaixo da linha de código acima…

System.out.println("Campo A: "+((CBean) campos.get(i)).getCampoA());
System.out.println("Cambo B: "+((CBean) campos.get(i)).getCampoB());

para averificar se existe dados no campo A e campo B…mostra o código onde tu monta o array campos, e onde tu está tentando montar o JComboBox…

Fernando

B

Fernando gracas ao system out println vi q tinha um erro nas buscas e estava trazendo apenas o campoB entao criei 2 metodo de busca la e chamo aqui:
campo busco todos campoA
campo2 busco todos campoB

String[] campos = new String[campo.size()];
        String[] campos2 = new String[campo2.size()];
        for (int i = 0; i < campo.size(); i++) {
            campos[i] = ((CBean) campo.get(i)).getCampoA();
            campos2[i] = ((CBean) campo2.get(i)).getCampoB();
        }
        jcb_campoA.setModel(new DefaultComboBoxModel(campos+campos2));// aqui precisava colocar o campoA e B percorridos!
        jcb_campoB.setModel(new DefaultComboBoxModel(campos+campos2));// mas ele nao aceita o operador + e nem o concat
B

so que note q meu laco for percorre apenas o campoA o q dev ofazer? percorrer os 2 ? fazer 2 lacos for? e como no meu setModel do meu combobox colocar o campoA e B la =// obrigada por a ajuda de vcs

Fernando_Generoso_da

um exemplo:

public class TesteJComboBox {

	public static void main(String args[]) {
		String campoA[] = new String[5];
		String campoB[] = new String[5];

		campoA[0] = "item a 1";
		campoA[1] = "item a 2";
		campoA[2] = "item a 3";
		campoA[3] = "item a 4";
		campoA[4] = "item a 5";
		campoB[0] = "item b 1";
		campoB[1] = "item b 2";
		campoB[2] = "item b 3";
		campoB[3] = "item b 4";
		campoB[4] = "item b 5";

		JComboBox combo = new JComboBox();

		for (int i = 0; i &lt; campoA.length; i++) {
			combo.addItem(campoA[i]);
		}
		for (int i = 0; i &lt; campoB.length; i++) {
			combo.addItem(campoB[i]);
		}

	}
}

Era isso?

B

vlw por sua atencao fernando era isso mesmo vlwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww meeeeeeesmo :*

Criado 26 de agosto de 2009
Ultima resposta 27 de ago. de 2009
Respostas 20
Participantes 4