当我必须删除一些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定期更新。
有人能帮助我吗?感谢