Adicionar 1 vetor String numa JComboBox

galera meu problema se extende assim:
o codigo ta todo em apenas 1 construtor, dae n vo colocar ele no codigo.

private JComboBox combo1;
private JComboBox combo2;
private String lista[] = {"um", "dois"};
private String um[] = {"eu", "ela", "funalo", "ciclano"};
private String dois[] = {"nossa", "neles", "todos"};
public cpt(){
 combo1 = new JComboBox(lista);
 combo2 = new JComboBox();
 combo2.setEnable(false);

 combo1.addItemListener(
  new ItemListener(){
   public void ItemStateChanged(ItemEvent e){
    if(e.getStateChange() == ItemEvent.SELECTED){
     switch(materiais.getSelectedIndex()){
      case 0:
       combo2.setEnabled(true);
       break;
      case 1:
       combo2.setEnabled(true);
       break;
     }
    }
   }
  }
 );
}

É um JFrame com 2 JComboBox na tela.
a 1 tem uma lista. e a segunda está vazia e inativa…

o problema em que estou tendo aqui é:

  • ao selecionar “um” na “combo1”, o “combo2” deverá receber o vetor “um”.
  • ao selecionar “dois” na “combo1”, o “combo2” deverá receber o vetor “dois”.

Help…
alguem me da uma luz ae. por favor.

—edit—
eu estou deixando no codigo o switch case como um exemplo… no meu programa estou usando ele pq tenhu 25 opções na lista do JComboBox.

Olá .I.G.,

Não sei se entendi direito, mas experimente recriar o combo dentro do switch…

...
case 0:
    combo2 = new JComboBox(um);
    combo2.setEnable(true);
...

abraços

[quote=gilsonpolito]Olá .I.G.,

Não sei se entendi direito, mas experimente recriar o combo dentro do switch…

...
case 0:
    combo2 = new JComboBox(um);
    combo2.setEnable(true);
...

abraços[/quote]
é certo instanciar o comboBox pra cada opção? eu tenhu 25 opções na lista do programa.

adicionei meu codigo para dar uma olhada.
eu fiz isso mas não funciona. quando eu seleciono o item na primeira JComboBox, ele dispara 31 erros no netbeans, mas o programa continua em execução.

resumindo… tem de ser outro jeito. :wink:

Cara tbm nao entendi mto bem o que vc queria fazer, de qualquer forma da uma olhada nesse codigo aqui.
executa ele ai e vc se te ajuda em alguma coisa.

package cert;

import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;

public class Teste extends JFrame implements ItemListener{
	
	private JComboBox combo1;
	private JComboBox combo2;
	private String lista[] = {"um", "dois","tres","quatro"};
	private String um[] = {"eu", "ela", "funalo", "ciclano"};
	private String dois[] = {"nossa", "neles", "todos"};
	public Teste(){
		
		combo1 = new JComboBox(lista);
		combo2 = new JComboBox();
		
		combo1.addItemListener(this);
		
		getContentPane().setLayout(new FlowLayout());
		getContentPane().add(combo1);
		getContentPane().add(combo2);
		setSize(300,100);
		setVisible(true);
	}
	
	public static void main(String[] arr)
	{
		new Teste();
	}
	
	private void preencheCombo(JComboBox combo2, String[] array) {
		for( String elemento : array)
			combo2.addItem(elemento);
	}

	public void itemStateChanged(ItemEvent e) {
		if(e.getStateChange() == ItemEvent.SELECTED){
			switch(combo1.getSelectedIndex()){
			case 0:
				preencheCombo(combo2, dois);
				break;
			case 1:
				preencheCombo(combo2, dois);
				break;
			}
		}		
	}
}

osmio, vlw cara… consegui aqui. nunca tinha imaginado isso.

Anderson_pqdt, vc complicou o codigo por uma coisa que o osmio mostro ja faz.
mas vlw por ter tentado.

de qualquer forma… eu ja anotei o post de vcs. sei que futuramente eu possa usar esse metodo que vc me mostrou.

Vlw gente.
[ RESOLVIDO ]

opa… surgiu um problema aqui.

combo2.addItemListener(
    new ItemListener() {
         public void itemStateChanged(ItemEvent e) {
            if(combo2.getItemAt(0) == um){
                if(combo2.getSelectedIndex() == 1){
                    mapa.setText(maps[3]);
                }else if(combo2.getSelectedIndex() == 2){
                    mapa.setText(maps[3]);
                }else if(combo2.getSelectedIndex() == 3){
                    mapa.setText(maps[3]);
                }
             }else if(combo2.getItemAt(1) == dois){
                 if(combo2.getSelectedIndex() == 1){
                    mapa.setText(maps[2]);
                }else if(combo2.getSelectedIndex() == 2){
                    mapa.setText(maps[2]);
                }else if(combo2.getSelectedIndex() == 3){
                    mapa.setText(maps[2]);
                }
            }
        }
    }
);

quero verificar com no if se tal item do JComboBox ta selecionado para setar um nome em um campo. Mas não sei qual Metodo eu uso pra isso.
ja tentei:

if(combo2.getSelectedItem() == um)
if(combo2.getSelectedObjects() == um)

mas nenhum deles ta funcionando.

====edit====
que questão nb neh. rsrs

combo2.addItemListener(
    new ItemListener() {
         public void itemStateChanged(ItemEvent e) {
            if(combo1.getSelectedIndex() == 1){
                if(combo2.getSelectedIndex() == 1){
                    mapa.setText(maps[3]);
                }else if(combo2.getSelectedIndex() == 2){
                    mapa.setText(maps[3]);
                }else if(combo2.getSelectedIndex() == 3){
                    mapa.setText(maps[3]);
                }
             }else if(combo1.getSelectedIndex() == 2){
                 if(combo2.getSelectedIndex() == 1){
                    mapa.setText(maps[2]);
                }else if(combo2.getSelectedIndex() == 2){
                    mapa.setText(maps[2]);
                }else if(combo2.getSelectedIndex() == 3){
                    mapa.setText(maps[2]);
                }
            }
        }
    }
);

estava invertendo as bolas… hehehe.
mais uma vez… :
[ RESOLVIDO ]

String[] lista = new String[] { "Opção1", "Opção2" };
String[] um = new String[] { "Opção1", "Opção2" };
String[] dois = new String[] { "Opção1", "Opção2" };

JComboBox box1 = new JComboBox(lista);
JComboBox box2 = new JComboBox();

box1.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent e) {
        if (box1.getSelectedIndex() == 0) {
            box2.setModel(new DefaultComboBoxModel(um));
        } else if (box1.getSelectedIndex() == 1) {
            box2.setModel(new DefaultComboBoxModel(dois));
        } else {
            box2.setModel(new DefaultComboBoxModel());
        }
    }
});