Simple slide para cargar "vistas previas" de videos de youtube desde java y ejecutarlos despues en el navegador establecido en el sistema
Proyecto:
1. Se creo un JFrame en netbeans con la siguiente distribucion de objetos, esta clase interfaz se llama "jbanner.java"
2. Se creo una clase "slider.java"
import java.awt.Desktop;
import java.net.URI;
import java.awt.Desktop;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JLabel;
/**
* @web http://jc-mouse.blogspot.com/
* @author Mouse
*/
public class slider {
private int lenvid;// cantidad de videos
//para almacenar las imagenes en memoria
private BufferedImage[] _image;
// para los ID de los videos de youtube
private String ID[];
private URL _url;
//para las imagenes del slider
int _imagen1=1;
int _imagen2=2;
int _imagen3=3;
int _imagen4=4;
/* el constructor de la clase con los ID de los videos*/
public slider(String id[]){
this.ID = id;
lenvid=ID.length;
}
/* carga las imagenes de youtube en memoria */
public void cargar_imagen(){
_image = new BufferedImage[lenvid];
//se llena el buffer con la imagen
for(int i=0; i<=lenvid-1;i++){
try {
_url = new URL("http://i2.ytimg.com/vi/" + ID[i]+ "/default.jpg");
_image[i] = ImageIO.read(_url);
} catch (IOException ex) {
Logger.getLogger(slider.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public BufferedImage getImage(int n){
return _image[n];
}
/* Abre el video en el navegador web del sistema */
public void abrirURL(int i){
try {
Desktop.getDesktop().browse(new URI("http://www.youtube.com/watch?v=" + ID[i]));
} catch (IOException ex) {
Logger.getLogger(slider.class.getName()).log(Level.SEVERE, null, ex);
} catch (URISyntaxException ex) {
Logger.getLogger(slider.class.getName()).log(Level.SEVERE, null, ex);
}
}
/* Coloca las imagenes en miniatura de los videos de youtube en los objetos JLabel */
public void setImagen(JLabel j1,JLabel j2,JLabel j3,JLabel j4){
j1.setIcon(new javax.swing.ImageIcon(getImage(_imagen1)));
j1.repaint();
j2.setIcon(new javax.swing.ImageIcon(getImage(_imagen2)));
j2.repaint();
j3.setIcon(new javax.swing.ImageIcon(getImage(_imagen3)));
j3.repaint();
j4.setIcon(new javax.swing.ImageIcon(getImage(_imagen4)));
j4.repaint();
}
/* avanza en 1 el slider y actualiza las imagenes */
public void Next(JLabel j1,JLabel j2,JLabel j3,JLabel j4){
if (_imagen1==lenvid-1){_imagen1=1;}
else {_imagen1++;}
if (_imagen2==lenvid-1){_imagen2=1;}
else {_imagen2++;}
if (_imagen3==lenvid-1){_imagen3=1;}
else {_imagen3++;}
if (_imagen4==lenvid-1){_imagen4=1;}
else {_imagen4++;}
setImagen(j1,j2,j3,j4);
}
/* retrocede en 1 el slider y actualiza las imagenes */
public void Prev(JLabel j1,JLabel j2,JLabel j3,JLabel j4){
if (_imagen1==1){_imagen1=lenvid-1;}
else {_imagen1--;}
if (_imagen2==1){_imagen2=lenvid-1;}
else {_imagen2--;}
if (_imagen3==1){_imagen3=lenvid-1;}
else {_imagen3--;}
if (_imagen4==1){_imagen4=lenvid-1;}
else {_imagen4--;}
setImagen(j1,j2,j3,j4);
}
}
La clase "slide.java", esta compuesta por el constructor slide(String id[]), que recibe un Array de String que contiene los ID de los videos de youtube
ej:
URL: http://www.youtube.com/watch?v=L2dO4DzgjsA
ID: L2dO4DzgjsA
Tambien se tiene el metodo cargar_imagen(), como su nombre lo indica, carga en el Buffer las imagenes que se obtienen de youtube, mediante la llamada url de:
http://i2.ytimg.com/vi/" + ID + "/default.jpg
Almacena estas en memoria que es un Array del tipo BufferedImage.
El metodo getImage(int n), retorna una imagen de memoria, especificado su posicion en el array con el parametro "n".
El metodo setImagen(JLabel j1,JLabel j2,JLabel j3,JLabel j4), coloca las imagenes en los controles JLabel que son pasados como parametros, estos JLabel son 4.
Los metodos Next() y Prev(), no hacen otra cosa que avanzar o retroceder en uno el SLIDE y actualizar las imagenes en los controles JLabel.
Por ultimo el metodo abrirURL(int i), abre una direcion web de youtube especificado por el parametro "i"
Desktop.getDesktop().browse(new URI("http://www.youtube.com/watch?v=" + ID[i]));
La implementacion en la interfaz "jbanner.java"
slider mislider;
String id[] = new String[3];
public jbanner() {
initComponents()
//se declaran los ID de los videos de youtube
id[0]="cc6nGy3SM4c";
id[1]="L2dO4DzgjsA";
id[2]="fUYBC_YXxWQ";
mislider = new slider(id);
mislider.cargar_imagen();
mislider.setImagen(jvideo1, jvideo2, jvideo3, jvideo4)
}
//evento para avanzar una posicion en el slide
private void lbNextMouseClicked(java.awt.event.MouseEvent evt) {
mislider.Next(jvideo1, jvideo2, jvideo3, jvideo4);
}
//evento para abrir una URL desde java
private void jvideo3MouseClicked(java.awt.event.MouseEvent evt) {
mislider.abrirURL(mislider._imagen3)
}
creo que el codigo se entiende, es bastante obvio y por demas comentado
El codigo fuente en Netbeans 6.0 puedes descargarlo desde aqui.
1 comentarios:
hola muy bueno el programa quisieras que isieras un ejemplo de un SystemTray si pudieras
Publicar un comentario