Como llevar una aplicacion Java a un Applet ????

danieln26
14 de Mayo del 2008
Tengo una aplicacion para el control de una camara web, trasmite el video y puedes tomar fotos y guardarlas. Pero necesito llevar esa aplicacion a Applet para poder trasmitir via web, lo que la camara capture. Pero no he podido realizar esta conversion, si alguien puede ayudarme por favor, es urgente...!!!!

Aqui les dejo el código, que les puede servir a cualquiera de uds tambien. De antemano,Gracias.

import javax.swing.*;
import javax.swing.event.*;
import javax.media.*;
import javax.media.control.*;
import javax.media.util.*;
import javax.media.cdm.CaptureDeviceManager;
import javax.media.format.*;
import javax.media.protocol.*;
import java.awt.Image;
import java.util.Vector;
import java.util.Iterator;
import javax.imageio.*;
import java.io.*;
import java.awt.image.RenderedImage;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;

public class captura extends JFrame implements ActionListener {

Player player = null;
JPanel panelCam,panelBotones,panelIm;
JButton boton = null;
JButton botonSalir = null;
JButton botonGuardar = null;
ImagePanel panelImagen = null;
Image img = null;
String dispositivo = "";

public void marco() throws Exception{
boton = new JButton();
boton.setText("Capturar");
boton.setSize(100,40);
boton.addActionListener(this);
botonGuardar = new JButton();
botonGuardar.setText("Guardar");
botonGuardar.setSize(100,40);
botonGuardar.addActionListener(this);
botonSalir = new JButton();
botonSalir.setText("Salir");
botonSalir.setSize(100,40);
botonSalir.addActionListener(this);
panelCam = new JPanel();
panelBotones = new JPanel();
panelIm = new JPanel();
panelImagen = new ImagePanel();
// para saber el dispositivo hacemos CaptureDeviceManager.getDeviceList() y devuelve un vector
// con los dispositivos instalados y reconocidos
CaptureDeviceInfo dev = CaptureDeviceManager.getDevice(dispositivo);
Format[] cfmts = dev.getFormats();
RGBFormat fmt = (RGBFormat)cfmts[4];
//obtengo el locator del dispositivo
MediaLocator loc = dev.getLocator();
player = Manager.createRealizedPlayer(loc);
player.start();
// esto lo saqué del foro jmf de Sun, hay que "parar un poco la aplicacion"
Thread.sleep(1000);
Component comp;

if ((comp = player.getVisualComponent()) != null)
{
// mostramos visualmente el reproductor
panelCam.add(comp,BorderLayout.CENTER);
this.getContentPane().add(panelCam,BorderLayout.NORTH);

}

panelBotones.add(boton,BorderLayout.EAST);
panelBotones.add(botonGuardar,BorderLayout.CENTER);
panelBotones.add(botonSalir,BorderLayout.WEST);
this.getContentPane().add(panelBotones,BorderLayout.CENTER);
panelIm.add(panelImagen,BorderLayout.CENTER);
this.getContentPane().add(panelIm,BorderLayout.SOUTH);
this.setSize(350,600);
this.setVisible(true);
}


public void seleccion() throws Exception{
ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent evt){

dispositivo = evt.getActionCommand();
System.out.println("Dispositivo seleccionado: " + dispositivo);
}
};
Vector listaDispositivos = null;
//buscamos los dispositivos instalados
listaDispositivos = CaptureDeviceManager.getDeviceList();
JFrame marcoSel = new JFrame();
JPanel panelRB = new JPanel();
Iterator it = listaDispositivos.iterator();
while (it.hasNext()){
CaptureDeviceInfo cdi = (CaptureDeviceInfo)it.next();
panelRB.add(new JRadioButton(cdi.getName()));
}
ButtonGroup grupo = new ButtonGroup();
for (int i=0;i<panelRB.getComponentCount();i++){
grupo.add((JRadioButton)panelRB.getComponent(i));
JRadioButton boton = (JRadioButton)panelRB.getComponent(i);
boton.addActionListener(al);
}

marcoSel.getContentPane().add(panelRB,BorderLayout.CENTER);
marcoSel.setSize(300,300);
marcoSel.setVisible(true);
while (dispositivo.compareTo("") == 0){
//espera a que se haga la seleccion
}
marcoSel.dispose();
}

public void actionPerformed(ActionEvent e) {
String ac = e.getActionCommand();
if (ac.equals("captura")){
// capturamos la imagen
FrameGrabbingControl fgc = (FrameGrabbingControl)
player.getControl("javax.media.control.FrameGrabbingControl");
Buffer buf = fgc.grabFrame();
// creamos la imagen awt
BufferToImage btoi = new BufferToImage((VideoFormat)buf.getFormat());
img = btoi.createImage(buf);
// la mostramos en nuestro panel
panelImagen.setImage(img);

}
if (ac.equals("guardar")){
if (img != null){
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
int result = chooser.showOpenDialog(null);
Integer i = new Integer(chooser.APPROVE_OPTION);
if (i != null) {

File archivo = chooser.getSelectedFile();
String imagen = archivo.getAbsolutePath();
System.out.println("imagen: "+imagen);
if (imagen.lastIndexOf(".") > 0){
imagen = imagen.substring(0,imagen.lastIndexOf("."));
}
imagen = imagen + ".JPG";
System.out.println("imagen:" + imagen);
File imagenArch = new File(imagen);
String formato = "JPEG";

try{
ImageIO.write((RenderedImage) img,formato,imagenArch);
}catch (IOException ioe){System.out.println("Error al guardar la imagen");}

}
}
else {
JFrame alerta = new JFrame();
alerta.setSize(300,100);
JPanel panelmsj = new JPanel();
JLabel msj = new JLabel();
msj.setText("Antes de guardar debes realizar una captura");
panelmsj.add(msj);
alerta.getContentPane().add(panelmsj);
alerta.setLocationRelativeTo(this);
alerta.setVisible(true);
alerta.setEnabled(true);
alerta.show();


}
}
if (ac.equals("salir")){
player.close();
System.exit(0);

}
}
public static void main(String[] args) throws Exception {
captura cap = new captura();
cap.seleccion();
cap.marco();
}
class ImagePanel extends Panel
{
public Image myimg = null;

public ImagePanel()
{
setLayout(null);
setSize(320,240);
}

public void setImage(Image img)
{
this.myimg = img;
repaint();
}

public void paint(Graphics g)
{
if (myimg != null)
{
g.drawImage(myimg, 0, 0, this);
}
}
}
}

Josedev
14 de Mayo del 2008
Primero que nada debes extender a la clase Applet, por ejemplo:
import java.applet.*;
public class NombreClase extends Applet

y hacer el archvo html que llame a tu clase,
O no se a que te refieres con que no puedes, ya que si hiciste este proframa para video streaming, deberías saberlo ya, creo... Mira, si no tienes experiencia con applets, pon aqui otro comentario, de no ser así, si el problema es que si tienes experiencia con Applets, pero no te esta funcionando algo, pon el problema específico...
Entra a esta página donde puedes encontrar lecturas interesantes sobre java...
http://javaoficial.blogspot.com