6
I have a configuration window that opens on the first run of the application I’m developing. After typing the directories that the application will run the user click save, some tests are run and finally runs a Thread.
I would like to make sure that after the execution of this Thread the configuration window closes by itself, but I tried to run dispose()
and setVisible()
and it disappears before running Thread.
// Evento para salvar os diretórios
btnSalvar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// Testa o campo com o diretório a ser indexado
// Se está vazio
if ((txtDirIndexado.getText().length() == 0 || Character
.toString(txtDirIndexado.getText().charAt(0)).equals(
" "))) {
JOptionPane
.showMessageDialog(panel,
"O campo com o diretório a ser indexado não pode estar em branco.");
} else if ((txtDirIndice.getText().length() == 0 || Character
.toString(txtDirIndexado.getText().charAt(0)).equals(
" "))) {
JOptionPane
.showMessageDialog(panel,
"O campo com o diretório que guardará o índice não pode estar em branco.");
} else {
try {
ArquivoDeConfiguracao.defineFonte(txtDirIndexado.getText());
ArquivoDeConfiguracao.defineIndice(txtDirIndice.getText());
ArquivoDeConfiguracao.definePrimeiraExecucao(1);
// Janela de aguardo
final JDialog janelaProgresso = new IndexAndo();
// Cria um novo processo e mostra a janela
new Thread(new Runnable() {
public void run() {
Indexador ind = new Indexador();
ind.iniciaIndexacao();
// Ao terminar fecha
SwingUtilities.invokeLater(new Runnable() {
public void run() {
janelaProgresso.setVisible(false);
}
});
}
}).start();
// Salva a data
dispose();
ArquivoDeConfiguracao.defineIndiceUltAtualizacao();
} catch (IOException e) {
// Gera erro
e.printStackTrace();
}
}
}
});
The code in full can be accessed in git.
Editing:
// Evento para salvar os direstórios
btnSalvar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// Testa o campo com o diretório a ser indexado
// Se está vazio
if ((txtDirIndexado.getText().length() == 0 || Character
.toString(txtDirIndexado.getText().charAt(0)).equals(
" "))) {
JOptionPane
.showMessageDialog(panel,
"O campo com o diretório a ser indexado não pode estar em branco.");
// Se está vazio
} else if ((txtDirIndice.getText().length() == 0 || Character
.toString(txtDirIndexado.getText().charAt(0)).equals(
" "))) {
JOptionPane
.showMessageDialog(panel,
"O campo com o diretório que guardará o índice não pode estar em branco.");
// Se o diretório existe
} else {
try {
ArquivoDeConfiguracao.defineFonte(txtDirIndexado.getText());
ArquivoDeConfiguracao.defineIndice(txtDirIndice.getText());
ArquivoDeConfiguracao.definePrimeiraExecucao(1);
final JDialog janelaProgresso = new IndexAndo();
new Thread(new Runnable() {
public void run() {
ProcessoIndexacao base = new ProcessoIndexacao();
base.start();
synchronized (base){
try {
base.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
janelaProgresso.setVisible(false);
}
});
}
}).start();
janelaProgresso.setVisible(true);
// Salva a data
ArquivoDeConfiguracao.defineIndiceUltAtualizacao();
} catch (IOException e) {
// Gera erro
e.printStackTrace();
}
}
dispose();
}
public class ProcessoIndexacao extends Thread{
public void run(){
synchronized (this){
Indexador ind = new Indexador();
ind.iniciaIndexacao();
notify();
}
}
}
It would be important for you to take this advice: How to create a Minimum, Complete and Verifiable example. So more people would be interested in helping you, because not everyone will want to access Github to understand your question.
– Math