Popular JComboBox (distrito, concelho, freguesia) através de ficheiro .csv ou .txt

1 resposta
S

Olá a todos

Estou a tentar implementar o que está descrito no título

private void LerRecenseamento() {

        FileInputStream fis;
        try {
            fis = new FileInputStream("teste.txt");
            DataInputStream dis = new DataInputStream(fis);
            while (dis.available() != 0) {
                String line = dis.readLine();
                CarregarFicheiros(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        JOptionPane.showMessageDialog(null, vecCod.size());
    }

    private static void CarregarFicheiros(String line) {

        String cod, denominacao, inscritos, num_assembleias, id_assembleia1, inscritos1, id_assembleia2, inscritos2;
        cod = denominacao = inscritos = num_assembleias = id_assembleia1 = inscritos1 = id_assembleia2 = inscritos2 = "";

// como este tokenizer em baixo, salta quando so tem 1 assembleia no ficheiro (;;) , no case 4 adicionamos nós ao vector quando so há uma assembleia         

        StringTokenizer tokenizer = new StringTokenizer(line, ";");
        if (tokenizer.countTokens() < 6) {
            return;
        }

        int cont = 0;


        while (tokenizer.hasMoreTokens()) {
            cont++;
            String token = tokenizer.nextToken();
            switch (cont) {
                case 1:
                    cod = token;
                    vecCod.add(cod);
                    break;
                case 2:
                    denominacao = token;
                    vecDen.add(denominacao);
                    break;
                case 3:
                    inscritos = token;
                    vecIns.add(inscritos);
                    break;

                case 4:
                    num_assembleias = token;
                    vecNum.add(num_assembleias);
                    if (num_assembleias.equals("1")) {
                        vecId2.add("");
                        vecIns2.add("");
                    }
                    break;
                case 5:
                    id_assembleia1 = token;
                    vecId1.add(id_assembleia1);
                    break;
                case 6:
                    inscritos1 = token;
                    vecIns1.add(inscritos1);
                    break;
                case 7:
                    id_assembleia2 = token;
                    vecId2.add(id_assembleia2);
                    break;
                case 8:
                    inscritos2 = token;
                    vecIns2.add(inscritos2);
                    break;
                default:
                    break;

            }
        }
    // System.out.println("OLI");
    }

Há alguma maneira prática de ter uma combobox Distrito, em que ao escolher um distrito mostra na combobox abaixo os concelhos correspondentes, e ao escolher um concelho mostrar na combobox abaixo as freguesias correspondentes, sem bases de dados?

Cumpriments e obrigado por qualquer resposta

1 Resposta

thiago.correa

Há sim, segue a lógica:

1- Crie uma lista só com os distritos
2- Crie um hash Map que contém como chave o id (ou o nome) do distrito, e como valor uma lista com os nomes dos conselhos
3- Faça o mesmo para armazenar as freguesias
4- adicione um action listener para o combo de distrito, que deverá buscar no HashMap de conselhos, a lista de conselhos para aquele distrito, você vai popular a sua combo com ela
5- faça o mesmo com a combo de freguesias

Tente fazer algo e vai postando as dúvidas, assim fica mais fácil de eu te ajudar e você aprender!

Criado 9 de junho de 2009
Ultima resposta 9 de jun. de 2009
Respostas 1
Participantes 2