Combobox

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

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

CBean = clientebean e controlC eh a control dos clientes

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

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

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@email.com.brteste

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

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

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!

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…

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

???

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!

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

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

Tenta assim:

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

[quote=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[/quote]

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…

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

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

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

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

um exemplo:

public class TesteJComboBox {

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

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

		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?