Jump to content
luiscastro

ciclo for termina após if executado no seu interior...

Recommended Posts

luiscastro

Malta...

Tenho duas jTables:

-Turma

-Aulas

Cada turma pode ter várias aulas

Adiciono uma turma á jTable "Turma"

Depois para essa turma adiciono duas aulas á jTable "Aulas"

Agora, se eu quiser remover uma turma devo remover todas as suas aulas....Tenho um botão remover com o código:

if(jTableTurmas.getSelectedRow() != -1)
        {
            jComboBoxAulas.removeAllItems();
        
            String turma = (String) jTableTurmas.getValueAt(jTableTurmas.getSelectedRow(), 0);
            ArrayList<String> aulas = carregaArrayComAulasDaTurma(turma);
            if(aulas.isEmpty() == false)
            {
                int resp = JOptionPane.showConfirmDialog(null, "Remover Turma "+turma+" e as Aulas associadas ?", "Confirmar !", JOptionPane.YES_NO_OPTION);
                if(resp == JOptionPane.YES_NO_OPTION)
                {
                    System.out.println("jTableAulas.getRowCount() "+jTableAulas.getRowCount());
                    for(int i = 0; i < jTableAulas.getRowCount(); i++)
                    {
                        System.out.println("tt.tt() ");
                        String pesq = (String) jTableAulas.getModel().getValueAt(i, 0);
            
                        if(aulas.contains(pesq))
                        {
                            tmTabelaDiasFunc.removeRow(i);
                        }
                        System.out.println("i "+i);
                    }
                    /*
                    jComboBoxTurmas.setSelectedIndex(-1);
                    int a = jTableTurmas.getSelectedRow();
                    tmTabelaTurmas.removeRow(a);*/
                }
            }
            /*
            if(jTableAulas.getRowCount() == 0)
            {
                int a = jTableTurmas.getSelectedRow();
                tmTabelaTurmas.removeRow(a);
                jComboBoxTurmas.setSelectedIndex(-1);
            }*/
        }
        else JOptionPane.showMessageDialog(null, "Seleccione a Turma que deseja remover!");
    }

:)

O meu problema está nesta parte do código:

for(int i = 0; i < jTableAulas.getRowCount(); i++)
                    {
                        System.out.println("tt.tt() ");
                        String pesq = (String) jTableAulas.getModel().getValueAt(i, 0);
            
                        if(aulas.contains(pesq))
                        {
                            tmTabelaDiasFunc.removeRow(i);
                        }
                        System.out.println("i "+i);
                    }

Quando eu clico no botão para remover, apenas estou a conseguir remover a primeira aula dessa turma, ou seja, a que aparece primeiro na jTable "Aula", ficando sempre uma aula por remover.

Caso a codição do "if" não se verefique ele avança no ciclo for, mas caso essa condição seja verdadeira ele remove a turma que está nessa posição do ciclo e pára, não avança no ciclo for...

Alguma ideia para resolver este problema?

Share this post


Link to post
Share on other sites
rikardo.1989

Boas,

Em vez de teres na condição de paragem do for o i < jTableAulas.getRowCount(), coloca antes do for um inteiro com o valor de jTableAulas.getRowCount(), que assim fica sempre constante. O que te estará a acontecer é que ao removeres uma aula, aquilo deve actualizar tb o getRowCount().

Tenta algo do tipo:

int length =  jTableAulas.getRowCount();

for(i = 0; i < length; i++) { ... }


Cumps,rikardo.1989

Share this post


Link to post
Share on other sites
herty

Tas a alterar directamente a condição do teu ciclo e deve ser por isso.

Tas a fazer i < jTableAulas.getRowCount()

E dentro de cilco tas a remover um item do jTableAulas.

Share this post


Link to post
Share on other sites
luiscastro

exato malta.....eu já resolvi o problema.....

tipo, ao remover uma linha as que estão depois descem uma posição....tinha de precaver essa situação.....

obrigado pelas respostas

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.