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: 