Duvida em atualizar JComboBox!

10 respostas
N

Galera…tenho o codigo abaixo que cria um ComboBox, gostaria que ao escolher um opçao do ComboBox um segundo Combox traria valores correspondentes ao que foi escolhido no primeiro ComboBox e assim por diante até o terceiro ComboBox.
Ex: Se escolhesse CORES no 1º ComboBox o 2ºComboBox viria AZUL - BRANCO- VERDE para escolher e o 3º ComboBox viria CLARO - ESCURO - MEDIO.
Agradeço a ajuda.

Codigo que já tenho (se alguem tiver algumas mudanças que melhoram o codigo, favor postar)…

import javax.swing.;
import java.awt.
;

public class ExemploJComboBox {

public ExemploJComboBox() {

JFrame f = new JFrame(Exemplo ExemploJComboBox);

JComboBox comboBox = new JComboBox();

comboBox.addItem(Cores);

comboBox.addItem(Tamanhos);

comboBox.addItem(Paises);

comboBox.setBounds(10,10,200,30);

f.getContentPane().setLayout(null);

f.getContentPane().add(comboBox);

f.setSize(300,100);

f.setVisible(true);

}

public static void main(String args[]) {

ExemploJComboBox e = new ExemploJComboBox();

}

}

10 Respostas

B

Ola,

Legal, entendi o que vc quer fazer, mas ainda não vi a sua dúvida…

Para saber quando um item da combo foi selecionado, use o java.awt.event.ItemListener

N

Amigo… estou com outro exemplo já com 2 combobox (segue abaixo o codigo), mas nao estou sabendo colocar o evento para ao escolher uma opcao no 1° combo o java abrir as propriedades respectivas no 2° combo e por diante até um 3º combo.
Agradeço se puder me ajudar. (Estou com varios materias …apostilas…tutoriais… com os metodos de combobox, e acho que é questao de tempo para conseguir resolver, mas se pintar alguma ajuda extra, ganho tempo).

import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.<em>;

import java.util.</em>;

public class ExemploComboBox extends JFrame {

private JComboBox cbb = new JComboBox();

private JComboBox cbb1;

private Vector cor = new Vector();
// Configurando a GUI

public ExemploComboBox() {

super( Testando JComboBox );
// Cria um container e define o modelo de layout (FlowLayout)
Container container = getContentPane();
container.setLayout( new FlowLayout() );

// Adiciona os elementos para o primeiro Combo
cbb.addItem("cores");
cbb.addItem("estados");
cbb.addItem("animal");

//Define o item que estará selecionado
cbb.setSelectedItem("cores");
//Adiciona para o container
container.add( cbb );

//Preenche o vetor
cor.add("Verde");
cor.add("Amarelo");
cor.add("Azul");
//Cria um Combo utilizando o vetor

cbb1 = new JComboBox(cor);

container.add( cbb1 );
// registra os tratadores de evento   
setSize( 300, 170 );
setVisible( true );
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

// Método principal da aplicação

public static void main( String args[] ){

ExemploComboBox combobox = new ExemploComboBox();

}

}
M

novato-mg,

vc pode colocar um evento no 1 combo, com java.awt.event.ItemListener. nesse evento vc remove todo o conteúdo do 2 combo com o método removeAllItems, ou seja, comboBox.removeAllItems(). Depois vc adciona um novo conteúdo ao seu 2 combo usando o método addItem.

Espero q seje isso q v queira fazer!

falow’s

N

Interessante a sua ideia… vou tentar aqui.
Se vc tiver um exemplo em codigo, favor postar.
Valeu!!! A galera do forum é sempre muito PRESTATIVA.

N

Marx …suas dicas me auxiliaram bastante.
Consegui desenvolver todo o codigo do programa e acabei incrementando ele com mais recursos. Ficou nota 10!
Valeu.

A

Caro colega,

Estou a procura de mais informações sobre Combobox. Voce poderia postar o seu código aqui? Seria muito bom para compartilhar conosco!!.

Atenciosamente,

Edson

N

Amamorim…segue abaixo o codigo de um programa com COMBO DINAMICO. Se precisar tenho outros. Flw.

//INSERINDO 02 (DOIS) JCOMBOBOX DINÂMICOS

import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.*;

public class Animais extends javax.swing.JFrame {

private JComboBox countryComboBox;
private JComboBox stateComboBox;
private JPanel elPanel;

public static void main(String args[]) {
	new Animais().show();
}

public Animais() {
	initComponents();
	initializeComponents();
}

private void initComponents() {

	countryComboBox = new JComboBox();
	stateComboBox = new JComboBox();
	elPanel = new JPanel();
	elPanel.setLayout(new FlowLayout());
	elPanel.setBackground(Color.blue);
	elPanel.add(countryComboBox);
	elPanel.add(stateComboBox);

	getContentPane().add(elPanel);

	Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
	setLocation(d.width / 2 - 320, d.height / 2 - 240);
	setSize(new java.awt.Dimension(700, 100));
	setResizable(false);
	setVisible(true);

	this.addWindowListener(new WindowAdapter() {
		public void windowClosing(WindowEvent e) {
			setVisible(false);
			System.exit(0);
		}
	});
}

private void initializeComponents() {
	addCountryChoices();
	stateComboBox.addItem("- Selecione a Categoria -");
}

private void addStateChoices(int country) {

	stateComboBox.removeAllItems();
	stateComboBox.addItem("- Escolha o Animal -");
	String estados[][] = init_States();

	for (int i = 0; i &lt;= estados[country].length - 1; i++) {
		stateComboBox.addItem(estados[country][i]);
	}
}
 
 //Adicionando a lista de paises em countryComboBox
private void addCountryChoices() {
	//adicionando na lista
	countryComboBox.addItem("- Selecione a Categoria -");
	String paises[] = init_countries();
	for (int i = 0; i &lt; paises.length ; i++) {
		countryComboBox.addItem(paises[i]);
	}
	ActionListener lst = new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			addStateChoices(countryComboBox.getSelectedIndex());
		}
	};
	countryComboBox.addActionListener(lst);
}

public String[] init_countries() {

	String[] sCountryString = { "Animais", "Aves"};
	return sCountryString;
}

public String[][] init_States() {

	String sStateArray[][] = new String[3][];
	sStateArray[0] = new String[] { "" };
	sStateArray[1] = new String[] { "Elefante", "Girafa", "Leao",
			"Hipopotamo", "Tigre", "Urso", "Zebra"};
	sStateArray[2] = new String[] { "Andorinha", "Gaviao", "Papagaio",
			"Tucano" };
	return sStateArray;
}

}

A

Prezado novato-mg,

Conterrâneo, muito bom o seu código, já me ajudou muito. Caso voce não se importar e puder mesmo mandar-me mais algum exemplo, eu ficarei imensamente agradecido e csao voce não queira postar aqui, pode também enviar para o meu e-mail. Estou aqui a disposição também para lhe enviar alguma coisa e trocarmos mais idéias também, integrando iclusive a esta equipe maravilhosa aqui do fórum.

Meu e-mail: [email removido]

Um abraço,
Edson amorim

N

Vou separar mais algum material de combobox dinamico e posto ainda hoje.
Flw. :cool:

A

Prezado colega,

Muito bem, a hora que chegar, tá muito bom. Estou sempre de olho aqui!! e antecipadamente j´a lhe agradeço.

Edson

Criado 14 de maio de 2007
Ultima resposta 1 de jun. de 2007
Respostas 10
Participantes 4