Boa sou um novato no fórum e um programador java iniciante , estou desenvolvendo um programa que necessita de interface gráfica, e ao executar sua função principal ele entra em um loop que “pode” demorar horas , dias ou minutos xD
Acontece que ao programa executar o loop ele para os processo com a interface, assim cria um inconveniente , que é caso o usuário queira pousar o programa ou parar o programa isso torna impossível(a menos se ele “conseguir” Finalizar o processo) pois ele só volta a interface apos todos os processo terminados , sei que isso é normal mas como deixei dito sou iniciante e não sei contorna esse meu inconveniente.
Obrigado Desde já
Att Victor Lacerda
Obs : Desculpe se esse tipo de tópico(ou similar) já exista quero dizer que eu pesquisei e não encontrei caso já exista gostaria de pedir desculpas
Bom, você irá precisar rodar em uma thread separada, assim, o usuário pode interagir com a tela e, ao mesmo tempo, o processo continuar rodando.
Pesquise sobre swingworker ou mesmo trheads, pode te ajudar bastante.
quando estava iniciando tbm tive esse problema, minha interface grafica fazia um loop e gerava varios valores(numericos) aleatorios e exibia na interface grafica(um programa gerador de numeros aleatorios), porem apenas o ultimo valor gerado pelo meu metodo é que aparecia na tela, e eu queria ver a animação passando :). resolvi utilizando threads como o amigo acima ja disse. pode pesquisar que o caminho é esse.
Como eu disse sou iniciante , rsrs e ele envolveu vários assunto que ainda não li.
Se for possível você me mostrar um exemplo de uso ficaria muito grato(e explicar)
Pelo que entendi tem que Estender na classe para usar (extends SwingWorker<Object, Object>) e criar método abstrato que irá executar a ação em plano de fundo(Background) utilizando o “doinBackgound” como metodo abstrato do SwingWorker.