Olá Giba.
Primeiramente, se você quer trabalhar com JProgressBar, te aconselho a estudar sobre Thread, pois é imprescindível.
Mas vamos tentar entender o que está acontecendo:
Quando você executa dois programas no Windows, são abertos dois processos, um para cada programa. Com o Java acontece algo parecido. Para você executar o loop e atualizar o JProgressBar ao mesmo tempo, você deve colocar cada tarefa em um processo, pois senão será priorizada a execução do loop, em detrimento à atualização do JProgressarBar. Para fazer isso, utiliza-se Thread. Nessa situação teríamos duas Threads sendo executadas em paralelo. O loop será executado na Thread principal, que é o próprio processo do teu programa. A atualização do JProgressBar será executada no outro processo, ou Thread, como é chamado em Java.
Então funcionaria da seguinte forma: a cada vez que passa pelo loop, é necessário informar o JProgressBar para que atualize o seu valor atual. Para que o JProgressBar atualize o seu valor, é necessário iniciar uma nova Thread, no intuito de realizar a atualização. Então, toda vez que o programa passa pelo loop, uma Thread é iniciada para que atualize o valor do JProgressBar. A Thread que foi iniciada deve ser encerrada logo que realiza a atualização.
Espero que possa ter entendido pelo menos o que está acontecendo com o teu programa, e como pode ser resolvido. O algoritmo que escrevi não é a única solução para o problema, e também não é a mais eficiente, mas possui a ideia central para a solução.
Se está iniciando em Java, não se preocupe se não entender, pois esse é um caso que exige o domínio de vários conhecimentos para que se possa chegar a uma solução satisfatória.
Boa sorte