Atualizar label dentro de uma thread

2 respostas
Patrickppta

Bom dia pessoal, estou com uma duvida cruel…
Eu criei uma thread para abrir minha web cam, pois da muito erro se eu abrir sem thread!
Entao, só que a Cam abre fora de meu form, corretamente (sem problemas)…
O que eu gostaria é de dentro do While que mostra a cam, ao invés de aparecer em outra janela, aparecesse em um label dentro de meu crude.
É possivel isso, faz pouco tempo que mecho com thread, se alguem puder me ajudar…

Ai vai o codigo que abre minha web cam:

import com.googlecode.javacv.*;
import static com.googlecode.javacv.cpp.opencv_core.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;

public class AbrirCam extends Thread {
   

   @Override
   public void run(){
        ImageIcon icone = null;
        try {
            OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
            grabber.start(); // abrindo o Diver da WebCam

            IplImage frame = grabber.grab(); // mandando imagem da cam para variavel
            
            
            CanvasFrame canvasFrame = new CanvasFrame("Abrir Cam"); // criando janela
            canvasFrame.setCanvasSize(frame.width(), frame.height()); // tamanho da janela
      
            while (canvasFrame.isVisible()) { // testando enquanto naum fechar janela
                frame = grabber.grab();  //  mandando imagem da cam para variavel
                canvasFrame.showImage(frame); // janela blitando imagem da frame

                // Gostaria de aqui dentro manipulasse e atualizar meu label lá em meu form
                     
            }
            icone = new ImageIcon (frame.getBufferedImage());
            grabber.stop(); // desligando cam
            canvasFrame.dispose(); // fechando janela
        } catch (FrameGrabber.Exception ex) {
            Logger.getLogger(AbrirCam.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Eu tbm tentei uma opçao e joguei todo este codigo dentro do proprio form, mais nao consegui jogar em thread…

Entao, fico no aguardo para alguem me ajudar…

2 Respostas

Ataxexe

Confesso que não li o seu código, mas já vi uma coisa no começo.

Não herde da classe Thread, assim você acopla demais o código. Prefira implementar Runnable e criar uma Thread passando esse Runnable.

Dessa forma a sua classe que implementa Runnable pode ter os atributos que você precisa pra fazer suas mudanças.

Patrickppta

Entaum é melhor criar um classe herdando de Runnable??

Tem algum exemplo que vc poderia me dar??

Criado 13 de março de 2012
Ultima resposta 13 de mar. de 2012
Respostas 2
Participantes 2