Problemas ao selecionar item no JComboBox

1 resposta
F

Olá galera, estou com uma dificuldade que creio deva parecer ridiculo…aí vai : estou criando um JComboBox, toda vez que seleciono um item de dentro deste JComboBox, deve ser criado um JTextField… o problema ocorre é que possuo uns 20 itens no Combo, e quando rodo a aplicação, e seleciono no Combo, só “cria” o textField referente à primeira opção do ComboBox…não consigo selecionar as outras! Meu código :

<blockquote>private void criaComponentes(Container container) {

capturaLabel = new JLabel(“Captura:);

container.add(capturaLabel);
capturaCombo = new JComboBox(getEspecificacoesDisponiveis());
	capturaCombo.addItemListener(new ItemListener() {
		public void itemStateChanged(ItemEvent evt) {
			if (evt.getStateChange() == ItemEvent.SELECTED) {
				criaCampos((String) evt.getItem());
			}
		}
	});
	container.add(capturaCombo, "wrap");

	mensagemLabel = new JLabel("Mensagem:");
	container.add(mensagemLabel);

	mensagemCombo = new JComboBox(); // O PROBLEMA ESTÁ APARTIR DAQUI!
	mensagemCombo.addItemListener(new ItemListener() {
		public void itemStateChanged(ItemEvent evt) {				
			System.out.println(evt);
			if (evt.getStateChange() == ItemEvent.SELECTED) {
				createFields((MessageSpec) evt.getItem());
			}
		}
	});

mensagemCombo.setEnabled(true);
container.add(mensagemCombo, “wrap”);

painelCampos = new JPanel();
	painelCampos.setLayout(new MigLayout());

	JScrollPane scrollPainelCampos = new JScrollPane(painelCampos);
	container.add(scrollPainelCampos, "wrap");
}

private String[] getEspecificacoesDisponiveis() {
	File pastaEspecificacoes = new File(getLocalPastaEspecificacoes());

	String[] arquivos = pastaEspecificacoes.list();

	for (int i = 0; i < arquivos.length; i++) {
		arquivos[i] = removeExtensaoArquivo(arquivos[i]);

	}
	return arquivos;

}

private String getLocalPastaEspecificacoes() {

	return System.getProperty("user.dir") + File.separator
			+ "especificacoes";

}

private String removeExtensaoArquivo(String nomeArquivo) {
	return nomeArquivo.replace(".xml", "");
}


private void criaCampos(String nomeArquivoEspecificacao) {
	String localArquivo = getLocalPastaEspecificacoes() + File.separator
			+ nomeArquivoEspecificacao + ".xml";

	ISOSpecFromXmlConverter converter = new ISOSpecFromXmlConverter();

	isoSpec = converter.fromXmlFile(localArquivo);

	Map<String, List<MessageSpec>> messageSpecs = isoSpec.getMessageSpecs();

	mensagemCombo.removeAllItems();

	for (Entry<String, List<MessageSpec>> entry : messageSpecs.entrySet()) {
		for (MessageSpec msgSpec : entry.getValue()) {
			mensagemCombo.addItem(new MessageSpecDecorator(msgSpec));

		}
	}

	mensagemCombo.setEnabled(true);
}

Por favor, me ajudem!!! :idea: :smiley:

1 Resposta

slompo

Acho que não ficou muito clara a sua dúvida…

Você quer gerar textfields para todos os items adicionados no combo? se for isso você vai ter que pegar o modelo do combo e iterar nele, usando while ou for e então criar dinamicamente os textfield.

Qualquer coisa posta ai…

Criado 10 de novembro de 2011
Ultima resposta 10 de nov. de 2011
Respostas 1
Participantes 2