Galera, estou fazendo testes com o JasperReport e tenho a seguinte questão:
A aplicação fica praticamente “congelada” até o relatório aparecer.
O relatório tem apenas um HELLO WORLD.
Como faço pra resolver isso?
Galera, estou fazendo testes com o JasperReport e tenho a seguinte questão:
A aplicação fica praticamente “congelada” até o relatório aparecer.
O relatório tem apenas um HELLO WORLD.
Como faço pra resolver isso?
thread
já pensou em thread? :!:
Usando thread não consegui.
Tenho outra parte da aplicação que imprimi etiquetas… e enquanto não imprimi todas as etiquetas, o sistema fica “congelado”.
Criei uma classe que extende Thread… e dentro do FOR… tem sleep(1000);
Tá faltando alguma coisa???
Depende de como vc implementou a thread …
isso.
cria uma thread separada para chamar o report.
new Thread(){
public void run(){
// call report
}
}.start();
Me parece que vc nem iniciou a Thread.
A classe que extende a Thread deve ser passada assim:
Thread t1 = new Thread(this);
t1.start();
Isso vc pode rodar na mesma classe que extende a Thread.
Tenho meu FRAME com um botão…
Tenho minha classe Imprime que extende Thread…
…
…
…
public void Imprimir(int copias)
for (int i =1; i < copias, i++) {
…
…
sleep(1000);
}
Aí quando clico no botão, chamo a classe Imprime e o método Imprimir().
Meu FRAME fica congelado até terminar de imprimir
pq vc manda “durmir” um segundo?
Vou presupor o caminho que vc está seguindo:
Clicar no botão - voce deve ter implementado um ActionPerformed no botão e chama o método doImprimir();
O método doImprimir() vai instanciar a classe Imprime. A classe Imprime, por sua vez, extends Thread e implementar o método void run() e dentro dele vc chama o método imprimir();
Voce inicia a thread chamando o método start() da classe Imprime() que vc acabou de instanciar.
class Imprime extends Thread{
@override
void run(){
imprimir();
}
void imprimir(){
/// call report
}
}
class Tela extends JFrame{
...
public void doImprimir(){
Imprime i = new Imprime();
i.start();
}
...
}
Qndo vc herda da Thread vc precisa implementar o método :
public void run()
{
this.Imprimir(numCopias);
yield();
}
public void Imprimir(int copias)
for (int i =1; i < copias, i++) {
...
...
sleep(1000);
}
Tenho meu FRAME com um botão…Tenho minha classe Imprime que extende Thread… … … … public void Imprimir(int copias) for (int i =1; i < copias, i++) { … … sleep(1000); }Aí quando clico no botão, chamo a classe Imprime e o método Imprimir().
Meu FRAME fica congelado até terminar de imprimir