laço for e jtable

14 respostas
S

ola pessoal estou fazendo uma implementacao em uma telinha aqui e to apanhando d+ n sei mais o que fazer ;//
veja meu codigo

TableModel tb = jt_customer2.getModel();
        CarenciaBean carencia = new CarenciaBean();

        for (int a = 0; a < tb.getRowCount(); a++) {
            Object codigo = tb.getValueAt(a, 0);
            SearchController control = new SearchController();
            List<CarenciaBean> retorno = control.getCarencia(codigo.toString());

            String proc = "";
            String data = "";
            String cod = "";

            for (int i = 0; i < retorno.size(); i++) {
                proc = retorno.get(i).getProcedimento();
                data = retorno.get(i).getDataC();
                cod = retorno.get(i).getCodigo();
                carencia.setDataC(data);
                carencia.setProcedimento(proc);
                carencia.setCodigo(cod);

                System.out.print(carencia.getCodigo() + ";" + carencia.getProcedimento() + ";" + carencia.getDataC() + "\n");// primeiro print
            }
            //System.out.print(carencia.getCodigo() + ";" + carencia.getProcedimento() + ";" + carencia.getDataC() + "\n");// segundo print
        }

o primeiro print retorna assim

0315.68.00002.02-0;ATEND. EMERGENCIA / URGENCIA;02/09/1999
0315.68.00002.02-0;CONSULTAS;01/09/1999
0315.68.00002.02-0;EXAMES SIMPLES;01/09/1999
0281.73.00503.01-0;ATEND. EMERGENCIA / URGENCIA;28/01/2011
0281.73.00503.01-0;CONSULTAS;28/01/2011
0281.73.00503.01-0;EXAMES SIMPLES;28/01/2011

porem precisava que ele quebra-se de linha apenas no codigo novo ex:

0315.68.00002.02-0;ATEND. EMERGENCIA / URGENCIA;02/09/1999;0315.68.00002.02-0;CONSULTAS;01/09/1999;0315.68.00002.02-0;EXAMES SIMPLES;01/09/1999;
0281.73.00503.01-0;ATEND. EMERGENCIA / URGENCIA;28/01/2011;0281.73.00503.01-0;CONSULTAS;28/01/2011;0281.73.00503.01-0;EXAMES SIMPLES;28/01/2011;

se eu usar o segundo print esse aqui

//System.out.print(carencia.getCodigo() + ";" + carencia.getProcedimento() + ";" + carencia.getDataC() + "\n");// segundo print

ele retorna isso

0216.44.00004.01-0;INTERNAÇAO EM APARTAMENTO;01/08/1992
0281.73.00503.01-0;PRE-EXISTENCIA;28/01/2011

da maneira correta mas so trouce um procedimento e nao todos procedimentos os 3 no caso ex:

0315.68.00002.02-0;ATEND. EMERGENCIA / URGENCIA;02/09/1999
0315.68.00002.02-0;CONSULTAS;01/09/1999
0315.68.00002.02-0;EXAMES SIMPLES;01/09/1999

gente to a dias travado nisso nao sei mais o que fazer ;~~ ja tentei tirar o “\n” ja tentei usar System.out.println invez de print só mas nenhum fica da maneira que eu preciso gente qqr ajuda é bem vindo!!! vlw

14 Respostas

ViniGodoy

Procure usar um TableModel próprio. Ninguém merece usar o DefaultTableModel.

Além disso, procure também abrir os tópicos no fórum correto, no seu caso, deveria ser o de Interface Gráfica.

Segue seu código corrigido. Removi também uma série de criação de variáveis e operações inúteis.

TableModel tb = jt_customer2.getModel();      
for (int a = 0; a &lt; tb.getRowCount(); a++) {  
    List&lt;CarenciaBean&gt; retorno = 
        new SearchController().getCarencia(tb.getValueAt(a, 0).toString());  
      
   String ultCod = retorno.size() == 0 ? "" : retorno.get(0).getCodigo();
      
    for (CarenciaBean bean : retorno) {  
        if (!ultCod.equals(bean.getCodigo())) {
           System.out.println();   
           ultCod = bean.getCodigo();
        }
        System.out.printf("%s;%s;%s", bean.getCodigo(), bean.getProcedimento(), bean.getDataC());
   }  
}
marcelocenerine

Deixa eu ver se entendi: vc quer quebra de linha apenas quando o código for diferente do anterior?

Caso sim, teste e veja se isso resolve:

String previousCode = "";
          for (int i = 0; i < retorno.size(); i++) {                
                carencia.setDataC(retorno.get(i).getDataC());  
                carencia.setProcedimento(retorno.get(i).getProcedimento());  
                carencia.setCodigo(retorno.get(i).getCodigo());  
                 if (i > 0) {
                     if (!carencia.getCodigo().equals(previousCode) {
                           System.out.println();
                      } else {
                           System.out.print(";");
                      }
                }
                System.out.print(carencia.getCodigo() + ";" + carencia.getProcedimento() + ";" + carencia.getDataC() );  
                previousCode  = carencia.getCodigo();             
            }
S

Viny meu querido coloquei o codigo la mas a variavel cod n existe agora precisava percorrer isso dentro deste codigo

for (int i = 0; i < retorno.size(); i++) {  
                proc = retorno.get(i).getProcedimento();  
                data = retorno.get(i).getDataC();  
                cod = retorno.get(i).getCodigo();

e nao consigo encaixar este for dentro dakele que vc mando cara ;/ mais uma vez vlw por sua atencao!!

ViniGodoy

Já tá corrigido lá.

S

marcelo

TableModel tb = jt_customer2.getModel();
        CarenciaBean carencia = new CarenciaBean();
        for (int a = 0; a < tb.getRowCount(); a++) {

            List<CarenciaBean> retorno =
                    new SearchController().getCarencia(tb.getValueAt(a, 0).toString());

            String previousCode = "";
            for (int i = 0; i < retorno.size(); i++) {
                carencia.setDataC(retorno.get(i).getDataC());
                carencia.setProcedimento(retorno.get(i).getProcedimento());
                carencia.setCodigo(retorno.get(i).getCodigo());
                if (i > 0) {
                    if (!carencia.getCodigo().equals(previousCode)) {
                        System.out.println();
                    } else {
                        System.out.print(";");
                    }
                }
                System.out.print(carencia.getCodigo() + ";" + carencia.getProcedimento() + ";" + carencia.getDataC());
                previousCode = carencia.getCodigo();
            }
        }

deixei assim mas ta saindo tudo na mesma linha ainda nao esta separando cada codigo por linha ;///

S

Viny agora compilo certinho mas ta saindo os 2 codigo na mesma linha nao ta separando ;~ vlw por sua atencao brow

S

ex:

System.out.print(carencia.getCodigo() + ";" + carencia.getProcedimento() + ";" + carencia.getDataC());

CODIGO da primeira pessoa | PROCEDIMENTO da primeira pessoa | DATA da primeira pessoa
CODIGO da segunda pessoa | PROCEDIMENTO da segunda pessoa | DATA da segunda pessoa

e ta saindo assim
CODIGO da primeira pessoa | PROCEDIMENTO da primeira pessoa | DATA da primeira pessoa | CODIGO da segunda pessoa | PROCEDIMENTO da segunda pessoa | DATA da segunda pessoa

igor_ks

Concatena um “\n” :slight_smile:

gustavo_mb

samuelM:
ex:

System.out.print(carencia.getCodigo() + ";" + carencia.getProcedimento() + ";" + carencia.getDataC());

CODIGO da primeira pessoa | PROCEDIMENTO da primeira pessoa | DATA da primeira pessoa
CODIGO da segunda pessoa | PROCEDIMENTO da segunda pessoa | DATA da segunda pessoa

e ta saindo assim
CODIGO da primeira pessoa | PROCEDIMENTO da primeira pessoa | DATA da primeira pessoa | CODIGO da segunda pessoa | PROCEDIMENTO da segunda pessoa | DATA da segunda pessoa

É que no exemplo que ele deu, fez com print. Para que haja quebra de linha use o println.

Altere a linha para:

System.out.println(carencia.getCodigo() + ";" + carencia.getProcedimento() + ";" + carencia.getDataC());
S

nao da postei ja os resultados de como fik com println e com “\n”

sai assim

0216.44.00004.01-0;ATEND. EMERGENCIA / URGENCIA;02/08/1992
0216.44.00004.01-0;CONSULTAS;01/08/1992
0216.44.00004.01-0;EXAMES SIMPLES;01/08/1992
0216.44.00004.01-0;EXAMES COMPLEMENTARES;29/11/1992
0216.44.00004.01-0;EXAMES ESPECIAIS / ALTA COMPL.;01/08/1992
0216.44.00004.01-0;TERAPIAS (QUIMIO. RADIO. HEMO);01/08/1992
0216.44.00004.01-0;INTERNACOES / CIRURGIAS;28/04/1993
0216.44.00004.01-0;TRANSPLANTES RINS / CORNEA;01/08/1992
0216.44.00004.01-0;PARTO A TERMO;01/08/1992
0216.44.00004.01-0;PSIQUIATRIA / INTERNACAO;01/08/1992
0216.44.00004.01-0;PRE-EXISTENCIA;01/08/1994
0216.44.00004.01-0;ATENDIMENTOS AMBULATORIAIS;01/08/1992
0216.44.00004.01-0;PROCEDIMENTOS ESPECIAIS;01/08/1992
0216.44.00004.01-0;ASSISTENCIA ODONTOLOGICA;01/08/1992
0216.44.00004.01-0;TERAPIAS SIMPLES;01/08/1992
0216.44.00004.01-0;PROCED CIRURGICOS E CLINICOS;01/08/1992
0216.44.00004.01-0;DIAGNOSES/ TRAT  AMBULATORIAIS;01/08/1992
0216.44.00004.01-0;EXAMES SOFISTICADOS;28/01/1993
0216.44.00004.01-0;EMERGENCIA CLIN/CIRURGICA;29/11/1992
0216.44.00004.01-0;PROCEDIMENTOS AMBULATORIAIS;30/09/1992
0216.44.00004.01-0;ATENDIMENTO E EXAMES ESPECIAIS;01/08/1992
0216.44.00004.01-0;CIRURGIAS ELETIVAS;01/08/1992
0216.44.00004.01-0;MAMOGRAFIA;01/08/1992
0216.44.00004.01-0;TOMOGRAFIA COMPUTADORIZADA;01/08/1992
0216.44.00004.01-0;RESSONANCIA MAGNÉTICA;01/08/1992
0216.44.00004.01-0;EXAMES SOFISTICADOS/QUIMIOTERA;01/08/1992
0216.44.00004.01-0;INTERNAÇAO EM APARTAMENTO;01/08/1992
0281.73.00503.01-0;ATEND. EMERGENCIA / URGENCIA;28/01/2011
0281.73.00503.01-0;CONSULTAS;28/01/2011
0281.73.00503.01-0;EXAMES SIMPLES;28/01/2011
0281.73.00503.01-0;EXAMES COMPLEMENTARES;28/01/2011
0281.73.00503.01-0;EXAMES ESPECIAIS / ALTA COMPL.;28/01/2011
0281.73.00503.01-0;TERAPIAS (QUIMIO. RADIO. HEMO);28/01/2011
0281.73.00503.01-0;INTERNACOES / CIRURGIAS;28/01/2011
0281.73.00503.01-0;PARTO A TERMO;28/01/2011
0281.73.00503.01-0;PSIQUIATRIA / INTERNACAO;28/01/2011
0281.73.00503.01-0;PRE-EXISTENCIA;28/01/2011

e precisava que quebra-se a linha apenas quando for outro codigo mas acho q n tem como ;\

S

o problema é q bean.getprocedimento ou bean.getdata retorna uma lista de 10 linhas e bean.getCodigo retorna apenas 1 item pq so existe um codigo entao acho q é nisso que esta dando este problema !!!

marcelocenerine

Cara, esse código que te passei está fazendo exatamente o que você quer:

List<CarenciaBean> retorno = new ArrayList<CarenciaBean>();

        CarenciaBean c1 = new CarenciaBean("02/09/1999", "ATEND. EMERGENCIA / URGENCIA", "0315.68.00002.02-0");
        CarenciaBean c2 = new CarenciaBean("01/09/1999", "CONSULTAS", "0315.68.00002.02-0");
        CarenciaBean c3 = new CarenciaBean("02/09/1999", "EXAMES SIMPLES", "0315.68.00002.02-0");
        CarenciaBean c4 = new CarenciaBean("28/01/2011", "ATEND. EMERGENCIA / URGENCIA", "0281.73.00503.01-0");
        CarenciaBean c5 = new CarenciaBean("28/01/2011", "CONSULTAS", "0281.73.00503.01-0");
        CarenciaBean c6 = new CarenciaBean("28/01/2011", "EXAMES SIMPLES", "0281.73.00503.01-0");
        retorno.add(c1);
        retorno.add(c2);
        retorno.add(c3);
        retorno.add(c4);
        retorno.add(c5);
        retorno.add(c6);

        String previousCode = "";
        for (CarenciaBean carencia : retorno) {
            if (!carencia.getCodigo().equals(previousCode)) {
                previousCode = carencia.getCodigo();
                System.out.println();
            } else {
                System.out.print(";");
            }
            System.out.print(carencia.getCodigo() + ";" + carencia.getProcedimento() + ";" + carencia.getDataC());
        }

0315.68.00002.02-0;ATEND. EMERGENCIA / URGENCIA;02/09/1999;0315.68.00002.02-0;CONSULTAS;01/09/1999;0315.68.00002.02-0;EXAMES SIMPLES;02/09/1999
0281.73.00503.01-0;ATEND. EMERGENCIA / URGENCIA;28/01/2011;0281.73.00503.01-0;CONSULTAS;28/01/2011;0281.73.00503.01-0;EXAMES SIMPLES;28/01/2011

ViniGodoy

Mas não era o que você queria? Você que disse que se o código fosse igual, deveria sair na mesma linha.

De qualquer forma, você não é capaz de pegar o código que deixei, que agora é bem mais simples, e corrigir?

S

sIM SIM vlw pela ajuda de todos vcs axo q consegui

Criado 6 de outubro de 2011
Ultima resposta 7 de out. de 2011
Respostas 14
Participantes 5