需要在循环内更新一些JLabel

时间:2018-06-13 19:12:58

标签: java swing jtable jlabel

当我必须删除一些JTable行时,我从另一个void调用下一个void。 所以,在主void中,我有一个循环来搜索要删除的一组行。当循环找到一个时,将调用下一个void来删除所需的行。

这样的事情:

* from another void:

    Begin loop {
        is there some rows to delete ?
        if yes, call aplica_super_reducao()
        if no, the loop goes on
    {

private void aplica_super_reducao(Integer [] num_filtros,Integer qualidade) {
    DefaultTableModel modelo = (DefaultTableModel)desdobramentos.getModel();
    int chave_sim = 0;
    Integer reduz=0;
    Integer cal_tot=0;
    Integer cal_red=0;
    //Percorre todas as chaves desdobradas
    for (int a = 0; a < modelo.getRowCount(); a++) {
          int n1 = (Integer) modelo.getValueAt(a, 0);
          int n2 = (Integer) modelo.getValueAt(a, 1);
          int n3 = (Integer) modelo.getValueAt(a, 2);
          int n4 = (Integer) modelo.getValueAt(a, 3);
          int n5 = (Integer) modelo.getValueAt(a, 4);
              //Percorre todos os números do cada filtro
              for (int i = 0; i < qualidade; i++) {
                   Integer z = num_filtros[i];
                   if (n1 == z ) {chave_sim=chave_sim+1;}
                   if (n2 == z ) {chave_sim=chave_sim+1;}
                   if (n3 == z ) {chave_sim=chave_sim+1;}
                   if (n4 == z ) {chave_sim=chave_sim+1;}
                   if (n5 == z ) {chave_sim=chave_sim+1;}
               }   
               if (chave_sim == 5) {
                  // APAGAR ESTA CHAVE DA TABELA
                  modelo.removeRow(a);
                  a=a-1;
                  chave_sim=0;
               }
     }
    tot_apos_filtros.setText(Integer.toString(modelo.getRowCount())) ;
    cal_red=modelo.getRowCount();
    cal_tot=Integer.parseInt(tot_desdobra.getText()); 
    reduz=cal_red*100/cal_tot;
    reduz=100-reduz;
    per_reducao.setText(Integer.toString(reduz)+" %") ;
}

正如您所看到的,我需要在进程结束时(删除所有行时)更新一些JLabel。但是,因为从工作循环调用此void,所以只有在主循环结束时才会更新这些JLabel。

因为这是一个漫长的过程(几分钟),我希望看到这些JLabel定期更新。

有人能帮助我吗?感谢

0 个答案:

没有答案