Bom dia Galera, gostaria mt que me ajudassem pois já tentei de tudo.
Tenho uma aplicação onde tenho dois botoes, importar e cancelar o envio do arquivo.
Estou usando thread depois que coloco ela no sleep , estou levando uma exception java.lang.IllegalThreadStateException: Thread is already started pois diz q já esta startada e nao posso ficar tentando fazer isso novamente.
Gostaria de saber como faço para que seja verificado a Thread em execução e de que modo resolvo as 4 possibilidades abaixo.Pq toda vez que eu clico no botão importar ele sempre chama o método run();
Obrigada!!!
[code]botaoImportar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
EventQueue.invokeLater(new Runnable() {
public void run() {
//Verificando se existe conteudo para importacao
if(jTextFieldNomeArquivo.getText().equals("") || jTextFieldNomeArquivo.getText().equals(null)){
JOptionPane.showMessageDialog(null, “Selecionar arquivo para importação”, “Arquivo”, JOptionPane.WARNING_MESSAGE);
//Verifica se thread foi interrompida depois da importacao ter sido cancelada
}else if(thread.isAlive() == true){
thread.resume();
//thread.currentThread()
//thread.join();
//importando pela primeira vez
}else{
progressBar = new JProgressBar();
progressBar.setStringPainted(true);
painelPrincipal.add(progressBar);
painelPrincipal.add(botaoCancelar);
thread.start();
}
//importando pela segunda vez sem cancelar
}
});
}
});
botaoCancelar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
int response = JOptionPane.showConfirmDialog(null, "Deseja cancelar a importação", "Confirmação",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (response == JOptionPane.YES_OPTION) {
progressBar.setVisible(false);
JOptionPane.showMessageDialog(null, "Processo Cancelado", "Cancelamento", JOptionPane.WARNING_MESSAGE);
thread.suspend();
botaoCancelar.setEnabled(false);
}
}
});
private class ProgressRunnable implements Runnable {
public void run() {
try {
progressBar.setMinimum(0);
progressBar.setMaximum(100);
value = progressBar.getMinimum();
while (value <= progressBar.getMaximum()) {
EventQueue.invokeLater(new Runnable() {
public void run() {
progressBar.setValue(value++); //atualiza o valor da barra
}
});
Thread.sleep(50);
}
} catch (InterruptedException ex){
ex.printStackTrace();
JOptionPane.showMessageDialog(null, ex.getMessage(), "Erro", JOptionPane.ERROR);
}
JOptionPane.showMessageDialog(null, "Processo concluído com sucesso!", "Importação", JOptionPane.INFORMATION_MESSAGE);
botaoCancelar.setEnabled(false);
}
}
[/code]