JForm congelado até o fim de um processo

Tenho um Jform que chama um método X.
Este método adiciona valores em um JList, e ai esta o problema!

private void btnExecutarActionPerformed(java.awt.event.ActionEvent evt) {
launcher = Launcher.runAutoCluster(this);
}

Problemas:

  1. Ele congela o formulário, logo só vejo o que esta sendo atualizado no JList no final! e em tempo real.
  2. Durante o processo de inserção preciso que ele pause, para que possa remover do JList algum item indesejado (Tem que ser nesta situação), porém o Jform inicial que chama o método esta congelado.

Alguém poderia dar uma ideia ou solução para o caso acima?

new Thread(){
  @Override   
  public void run(){
     //metodo aqui
  }
}.start();

Abner perdão, deixa por o que já tinha feito:

private void btnExecutar() {
Launcher.mainVAC=this;
Launcher.tarefa = new Thread(t1, “T1”);
Launcher.tarefa.start();
}

private static Runnable t1 = new Runnable() {
    public void run() {
        try{
        	launcher = Launcher.runAutoCluster(Launcher.mainVAC);
        } catch (Exception e){}

    }
};

Com isso ele atualiza o JList que é uma beleza em tempo real, porém não consegui resolver o problema da pausa. Em outro botão tentei por:

	synchronized(Launcher.tarefa) {    	
  	try {
  		Launcher.tarefa.wait();
  	} catch (InterruptedException e) {
  		e.printStackTrace();
  	}

Mas ele congela o JForm, mas o processo do método Launcher.runAutoCluster(…), continua rodando e deveria ser ao contrario.

Mas não entendi essa pausa, você quer que ele insira um item, pause e retorne com algum tipo de confirmação?

O que ele deve fazer:

  1. Abrir JForm e ao apertar executar adicionar itens no JList, sem pausar o JForm (Congelar), pois são dois processos distintos. (Com o comando que passei acima, ele adiciona sem congelar esta perfeito).

  2. Porém no Jform se apertar em pausar, preciso que ocorra uma “Pausa” no código do executar (que nada mais é que um For, com ele pausado posso por exemplo adicionar “manualmente” outro item ou remover. E ao apertar outro botão, ele continue de onde parou com os dados atualizados.

Ele precisa pausar, pois se ele tiver rodando quando fizer isso, os dados vão estar errados, pois ele precisa ter esta atualização no JList, para seguir com os dados corretos.

Exemplo hipotético:

Estou incremental números no JList (1 a 100) a cada 20 itens o for que adiciona os números deve pausar, assim posso adicionar ou remover números da lista para que ele continue baseado nos valores modificados no Jlist.

Preciso forçar uma pausa no for ou na thread dele, quando um botão seja pressionado, e despausado por outro.

Existem N maneiras de fazer isso, por exemplo, através de um semáforo, através de um observer…
Posta o código das suas classes que fica mais fácil de te dar dicas ou exemplos.

Mas não tem muita coisa, estou na fase de prototipo, não tenho nada ainda, basicamente

  1. Executa JFom (Com Jlist).
  2. Aperta executar e cria a thread, com os comandos em lote.
  3. Aperta pausa, para o comando em lote.
  4. Aperta Resume, continua o comando de onde parou.

estou por hora usando algo nada bonito, como while (varBooleana) {sysout}, este laço fica se repetindo até que varBooleana, seja false e por ai, controlo a “pausa” no código. Só isso mesmo. Mas queria saber se tem um jeito melhor ou mais elegante/refinado de fazer isso.

Se você não postar o código, não tem como sabermos como você implementou isso aí.
:wink: