Java Zone Espia Web
martes, marzo 6, 2012 at 2:33PM
Abraham

Nota del editor: este post describe un sencillo programa Swing que no requiere de absolutamente ninguna librería, y que se conecta con varias cámaras web que publican sus imágenes en Internet. La versión que se describe aquí es una segunda versión creada por el autor mejorando una versión publicada recientemente.

Java Zone Espia Web

Mencionaremos los arreglos hechos con respecto a la primera entrega:

 

 

Ahora mencionaremos algunos aspectos a mejorar:

 

Imagenes

Codigo


Clase Principal

package clases;

import java.awt.GridLayout;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Principal extends JFrame {

   public JPanel panelPrincipal;
   public ArrayList urls = new ArrayList();
   public ArrayList camaras = new ArrayList();

   public Principal() {

       urls.add("http://146.186.123.229/axis-cgi/jpg/image.cgi?resolution=352x240");
       urls.add("http://131.111.133.11/axis-cgi/jpg/image.cgi?resolution=480x360&dummy=1267804722739");
       urls.add("http://fotogermanoviseu.dyndns.info/axis-cgi/jpg/image.cgi?resolution=640x480&compression=10&color=1&clock=1&date=1");
       urls.add("http://198.82.159.134/axis-cgi/jpg/image.cgi?resolution=640x480&dummy=1152818432828");
       urls.add("http://98.238.252.97/axis-cgi/jpg/image.cgi?resolution=800x600&dummy=1280477002758");
       urls.add("http://80.24.195.19/axis-cgi/jpg/image.cgi?resolution=480x360");
    urls.add("http://216.8.159.21/axis-cgi/jpg/image.cgi?resolution=640x480");
       urls.add("http://hncam1.hn.psu.edu/axis-cgi/jpg/image.cgi?resolution=320x240");

       panelPrincipal = new JPanel();
       panelPrincipal.setLayout(new GridLayout(2, 4, 5, 5));
       for (int i = 0; i < urls.size(); i++) {
               PanelCamara pc = new PanelCamara(i,urls.get(i),this);
               panelPrincipal.add(pc);
               camaras.add(pc);
       }
       add(panelPrincipal);
   }
...
}


Clase PanelCamara

package clases;

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class PanelCamara extends JPanel {

   String url = "";
   int id=0;
   Image img;
   Principal prin;
   HiloFoto hf;
   boolean seleccionado=false;

   public PanelCamara(int id,String url, Principal p) {
       this.url = url;
       this.prin=p;
       this.id=id;
       addMouseListener(new MouseListener() {

  @Override
  public void mouseReleased(MouseEvent e) {

  }

  @Override
  public void mousePressed(MouseEvent e) {

  }

  @Override
  public void mouseExited(MouseEvent e) {

  }

  @Override
  public void mouseEntered(MouseEvent e) {

  }

  @Override
  public void mouseClicked(MouseEvent e) {
   if(seleccionado){
    seleccionado=false;
   }else{
    seleccionado=true;
   }
   if(seleccionado){
    prin.DesactivarHilos();
    hf=new HiloFoto(PanelCamara.this);
          hf.start();
    prin.panelPrincipal.removeAll();
    prin.panelPrincipal.setLayout(new BorderLayout());
    prin.panelPrincipal.add(prin.camaras.get(PanelCamara.this.id));
    prin.setBounds(0, 0, 500, 400);
    prin.setLocationRelativeTo(null);
   }else{
    hf.stop();
    hf=null;
    prin.panelPrincipal.removeAll();
    prin.panelPrincipal.setLayout(new GridLayout(2, 4, 5, 5));
    prin.AgregarPaneles();
    prin.ActivarHilos();
    prin.setBounds(0, 0, 600, 250);
    prin.setLocationRelativeTo(null);
   }
  }
 });
       img = new ImageIcon(this.getClass().getResource("/lib/webcam.png")).getImage();
       this.setDoubleBuffered(true);
       IniciarHilo();
   }

   public void PararHilo(){
    hf=null;
   }

   public void IniciarHilo(){
    hf=new HiloFoto(this);
       hf.start();
   }

   @Override
   public void paintComponent(Graphics g) {
           super.paintComponents(g);
           g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
   }
}

Clase HiloFoto

package clases;

import java.awt.Image;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.ImageIcon;

public class HiloFoto extends Thread{

 PanelCamara pc;

 public HiloFoto(PanelCamara pc){
 this.pc=pc;
 }

 public void run(){
 try {
  Thread.sleep(500);
  while(true){
   pc.img.flush();
   pc.img=new ImageIcon(new URL(pc.url)).getImage();
   pc.repaint();
   pc.updateUI();
   Thread.sleep(500);
  }
 } catch (InterruptedException e) {
  e.printStackTrace();
 } catch (MalformedURLException e) {
  e.printStackTrace();
 }
 }
}

 

Descargar

El proyecto completo lo pueden descargar desde aquí, se incluyen los archivos fuentes, las imágenes y el Jar ejecutable.

Recuerden visitarnos en Java Zone

Nota: noticia enviada por JavaZone

Article originally appeared on javaHispano (http://www.javahispano.org/).
See website for complete article licensing information.