Usar web cam em swing

Boas pessoal !

tenho uma app em swing e uma web cam, e gostaria que apartir da aplicação, poder aceder a web cam para poder ver o funcionario que ta afrente da camera , tirar fotos apartir de um botao da minha app, e a seguir guardar as fotos em c:\myAPP\photos\

è possivel fazer isso ?

Ate ja !

Cara…tenho um código aqui que “trava” toda e qualquer aplicação java que estiver aberta no momento da execução do meu programa… mais com um detalhe, a captura da webcam e o restante só travam quando eu coloco o cursor do mouse sobre a interface do programa…
O computador (exceto aplicações java) funciona corretamente, porém, quando eu vou desligá-lo ele não responde e continua com as aplicãções em Java (ireports, NetBeans) por exemplo travadas. Me obrigando a desligar diretamente meu PC…

Lembrando… se eu ficar 5h rodando meu programa e não colocar o cursor sobre a interface do programa ele continua capturando as imagens normalmente.
Dá pra intender um “DIAXOO” desse ? haha

Agradeço aqueles que quizerem ajudar, ainda bem que pessoas competentes aki não faltam!
Segue a parte do código que (se inserido) TRAVA:

  public void gravaImg (Image imagem){
        String caminho = "C:\\Neeryck\\PROGRAMAÇÃO\\APOSTILAS";

        try {
            ImageIO.setUseCache(true); //COM OU SEM ESSE TRECHO ELE TRAVA
            ImageIO.setCacheDirectory(new File(caminho));  //COM OU SEM ESSE TRECHO ELE TRAVA
            ImageIO.write((RenderedImage) imagem, "jpg", new File(caminho));
            JOptionPane.showMessageDialog(this, "Imagem Capturada!");
        } catch (IOException e) {
            JOptionPane.showMessageDialog(null, "não foi possivel encontrar " +
                    "o dispositivo para a captura da imagem.");
            e.printStackTrace();

        }

    }
    private JButton getCaptura() {
        if (captura == null) {
            captura = new JButton("Captura");
            captura.setBounds(50, 50, 50, 50);
            captura.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    FrameGrabbingControl fgc = (FrameGrabbingControl) player
                            .getControl("javax.media.control.FrameGrabbingControl");
                    buf = fgc.grabFrame();
                    btoi = new BufferToImage((VideoFormat) buf.getFormat());
                    img = btoi.createImage(buf);
                    gravaImg(img);
                }
            });
        }
        return captura;
    }

OBS: JMF.jars OK!