Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames independientes y depositarlos en memoria para despues mostralos al usuario a través de un picturebox y un Timer para crear la ilusión de movimiento. ¿Porque lo haremos? Porque es justo y necesario ¿Que necesitamos? [...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el protocolo SMTP (Simple Mail Transfer Protocol) así como los distintos tipos de conexión con servidores de correo -TLS, SSL, autentificación con usuario y password, etc [Según SantaWikipedia] ¿Qué necesitamos? JavaMail 1.4.5 Java y Netbeans 6.9 [...]

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic de Microsoft, este proyecto tendrá las funciones básicas de gestión INSERT, DELETE, UPDATE y una interfaz de usuario para utilizarlas. ¿Que necesitamos? Visual Studio 2008 o superior Firebird última versión Firebird ADO.NET Data Provider. Conocimientos básicos [...]

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado. import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; [...]

26/2/10

Reproductor de videos en java: The ProgressBar - parte 5

JAN29


En esta quinta parte del tutorial "reproductor de videos en java", se implementara un simple "ProgressBar" o Barra de Progreso, esta barra se usa para mostrar el progreso en la reproduccion de un video, su implementacion es bastante sencilla y para ello se añadiran nuevos metodos en la clase "paneldevideo.java", los metodos son startAnimation(), encargada de comenzar la animacion del progressbar y mostrarla en la interfaz, stopAnimation(), como su nombre lo dice, detiene la animacion.

Tambien se añadiran nuevos variables, a continuacion se detalla su uso:
// Clase abstracta, nos permitira implementar la animacion, gracias a su metodo run()
private TimerTask task;
//variable de tipo entera encargada de contener el porcentaje de avance de la reproduccion del video
private int frame = 0; 
//Un temporizador
private Timer tiempo ;
// variable de tipo int que nos permite especificar la velocidad de la animacion, un valor de 1000 = 1 segundo
private int speed = 100;

El primer metodo a implementar es el metodo startAnimation(), a este metodo se le pasa como parametro un objeto JProgressBar, luego se crea una nueva instancia del Timer y se implementa la animacion con el TimerTask.

//comienza la animacion y actualiza el JProgressBar
    public void startAnimation(final JProgressBar b){
        //creamos una instancia para el Timer        
        tiempo = new Timer();
        task = new TimerTask(){
            public void run(){
                //calculamos el tiempo de la animacion por 100%
                frame = (int) Math.round((mediaPlayer.getMediaTime().getSeconds() * 100)/mediaPlayer.getDuration().getSeconds());
                //cuando ambos sean iguales quiere decir que el video a alcanzado el final de la reproduccion
                if(mediaPlayer.getMediaTime().getSeconds() == mediaPlayer.getDuration().getSeconds()){
                    frame=100; // 100%
                    STOP();//SE DETIENE Y DESTRUYE EL MEDIA PLAYER
                    stopAnimation(b);//se detiene la animacion
                }
                else // sino
                {
                    // se actualiza el nuevo valor del JProgressBar
                    b.setValue(frame);
                     //Obtiene la longitud en segundos del archivo de video
                     System.out.println("Tiempo total del video: " + mediaPlayer.getDuration().getSeconds() + " segundos");
                     //Obtiene el tiempo en segundos del video en reproduccion
                     System.out.println("Rate: " + mediaPlayer.getMediaTime().getSeconds() + "segundos");
                     //Tiempo transcurrido
                     System.out.println("Tiempo de reproduccion: " + frame + "% de 100%");
                }
            }
        };
        // se inicia la animacion
        tiempo.schedule(task,0, speed);
    }

Para obtener el tiempo total en segundos del video en cuestion se utiliza [PLAYER].getDuration().getSeconds(), este metodo nos devuelve un valor double.
Para obtener el tiempo transcurrido desde que se inicio la reproduccion del video se utiliza el metodo [PLAYER].getMediaTime().getSeconds(), este tambien devuelve un valor double.
Estos dos metodos son suficientes para construir la animacion del progressbar.

El metodo para detener la animacion es:

//detiene la animacion
public void stopAnimation(final JProgressBar b){
    tiempo.cancel();
    task.cancel();
    b.setValue(0);
}

Este metodo detiene el Timer, TimerTask y coloca el valor del JProgressBar en "cero".

El videotutorial
Nota: Para una mejor comprension de este videotutoial se recomienda pasar por los anteriores tutoriales, ya que muchas cosas se pasan por alto, para asi no estar repitiendo lo mismo a cada rato. gracias

continue reading

21/2/10

Los Skin de Substance

JAN29

 En un post anterior "Substance look & feel", se vio la manera de instalar la libreria de Substance para cambiar la aperiencia de los formularios de Java, todo esto utilizando el IDE de Netbeans, tambien se vio la manera de hacer uso de esta libreria, lo que falta ahora es conocer los skin disponibles con lo que podemos trabajar, para esto:

Para obtener las classes de skin, el siguiente codigo


import java.util.Map;
import org.jvnet.substance.*;
import org.jvnet.substance.skin.SkinInfo;

public class Main {   
    public static void main(String[] args) {     
     Map<String, SkinInfo> skins = SubstanceLookAndFeel.getAllSkins();
             for (SkinInfo skinInfo : skins.values())
             {
                 System.out.println("skin Class: " + skinInfo.getClassName());
             }   
    }
}

el resultado:

skin Class: org.jvnet.substance.skin.AutumnSkin
skin Class: org.jvnet.substance.skin.BusinessSkin
skin Class: org.jvnet.substance.skin.BusinessBlackSteelSkin
skin Class: org.jvnet.substance.skin.BusinessBlueSteelSkin
skin Class: org.jvnet.substance.skin.ChallengerDeepSkin
skin Class: org.jvnet.substance.skin.CremeSkin
skin Class: org.jvnet.substance.skin.CremeCoffeeSkin
skin Class: org.jvnet.substance.skin.DustSkin
skin Class: org.jvnet.substance.skin.DustCoffeeSkin
skin Class: org.jvnet.substance.skin.EmeraldDuskSkin
skin Class: org.jvnet.substance.api.skin.GeminiSkin
skin Class: org.jvnet.substance.api.skin.GraphiteAquaSkin
skin Class: org.jvnet.substance.api.skin.MagellanSkin
skin Class: org.jvnet.substance.skin.MagmaSkin
skin Class: org.jvnet.substance.skin.MistAquaSkin
skin Class: org.jvnet.substance.skin.MistSilverSkin
skin Class: org.jvnet.substance.skin.ModerateSkin
skin Class: org.jvnet.substance.skin.NebulaSkin
skin Class: org.jvnet.substance.skin.NebulaBrickWallSkin
skin Class: org.jvnet.substance.skin.OfficeBlue2007Skin
skin Class: org.jvnet.substance.skin.OfficeSilver2007Skin
skin Class: org.jvnet.substance.skin.RavenSkin
skin Class: org.jvnet.substance.skin.RavenGraphiteSkin
skin Class: org.jvnet.substance.skin.RavenGraphiteGlassSkin
skin Class: org.jvnet.substance.skin.SaharaSkin
skin Class: org.jvnet.substance.skin.TwilightSkin

Para obtener los nombres, cambiamos la instruccion skinInfo.getClassName(), por skinInfo.getDisplayName() y tenemos:

skin Name: Autumn
skin Name: Business
skin Name: Business Black Steel
skin Name: Business Blue Steel
skin Name: Challenger Deep
skin Name: Creme
skin Name: Creme Coffee
skin Name: Dust
skin Name: Dust Coffee
skin Name: Emerald Dusk
skin Name: Gemini
skin Name: Graphite Aqua
skin Name: Magellan
skin Name: Magma
skin Name: Mist Aqua
skin Name: Mist Silver
skin Name: Moderate
skin Name: Nebula
skin Name: Nebula Brick Wall
skin Name: Office Blue 2007
skin Name: Office Silver 2007
skin Name: Raven
skin Name: Raven Graphite
skin Name: Raven Graphite Glass
skin Name: Sahara
skin Name: Twilight

Para los más vagos, pueden bajarse el codigo fuente de esta mini-aplicacion hecha en Netbeans 6.0 desde este enlace, solo pesa 58 kb

Click para descargar


Lamentablemente para esta libreria Substance no existe mucha informacion en castellano, y aunque su documentacion es extensa, que este en ingles, retraza un poco su estudio.

continue reading

20/2/10

Substance Java look & feel

JAN29

Substance Java es un proyecto enfocado en la apariencia visual de las GUI (Interfaces Graficas de Usuario) para Java. Esta libreria permite agregar una apariencia mas agradable al usuario final y disponde de varios skin ya predefinidos en el JAR, como tambien el autor tambien deja disponible las fuentes de la libreria, asi tambien documentacion de su uso (en ingles).

INSTALACION
Paso 1. Ingresa a la pagina de Substance y dirigete a la seccion de GET LATEST VERSION. Una vez ahi,te muestra una lista con las descargas disponibles, en primer lugar se encuentra la documentacion y codigo fuente de la libreria, si deseas puedes bajarte ese paquete para echar un ojo de como funciona la libreria.
El paquete necesario para la utilizacion de la libreria es "Substance 5.3 Library", se encuentra en segundo lugar, esta es la libreria completa, las restantes son versiones Lite.
Paso 2. Una ves que te descargaste el paquete, se debe proceder a su instalacion. Colocamos el paquete "Substance.jar" en el disco duro, por ejemplo:
Esta ubicacion no es una regla, puedes colocarla donde quieras, ademas de que yo me baje tambien el paquete Substance-All para cureosear un poco el codigo.

Paso 3. Abre Netbeans  y dirigete al menu TOOLS - LIBRARIES, una ves abierta la ventana "Library Manager", presiona el boton New Library,  entonces colocas un nombre a la libreria, "substance" y OK
Paso 4. Una ves creada la libreria, procedemos a agregar el archivo JAR. para ello situate en la pestaña "Classpath" y presiona el botn "Add Jar/Folder", busca el archivo substance.jar en tu pc y OK
Ya esta instalada la libreria Substance

Primer programa con Substance.

1. Crea un nuevo proyecto en netbeans, dale el nombre que quieras, luego añade un JFrame y coloca los controles que gustes.
3. Añade la libreria al projecto

2. en el Main del proyecto, añade este codigo:

public static void main(String[] args) {        
        EventQueue.invokeLater(new Runnable(){
        public void run(){
            try{
                JFrame.setDefaultLookAndFeelDecorated(true);
                SubstanceLookAndFeel.setSkin("org.jvnet.substance.skin.DustCoffeeSkin");
            }              
            catch(Exception e){
            }               
    //donde skinform, es el nombre del JFrame donde se aplicara el skin
            new skinform().setVisible(true);
        }
        }); 
}

Algunos skin disponibles:

continue reading

17/2/10

Obtener "Sistema Operativo" con clase System en Java

JAN29

Es mucha la informacion que se puede obtener de una pc desde Java, para ello existen muchas clases como por ejemplo la clase "System" y dentro de ella la el metodo getProperties().



/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class Main {

    public static void main(String[] args) {
      //Sistema Operativo        
      System.out.println("Sistema Operativo: " + System.getProperty("os.name"));
      //Arquitectura
      System.out.println("Sobre arquitectura " + System.getProperty("os.arch"));
      //Version  
      System.out.println("Versión " + System.getProperty("os.version"));
    }
}


Asi tambien tenemos muchas mas:

java.version Java Runtime Environment version
java.vendor Java Runtime Environment vendor
java.vendor.url Java vendor URL
java.home Java installation directory
java.vm.specification.version Java Virtual Machine specification version
java.vm.specification.vendor Java Virtual Machine specification vendor
java.vm.specification.name Java Virtual Machine specification name
java.specification.version Java Runtime Environment specification version
java.specification.vendor Java Runtime Environment specification vendor
java.specification.name Java Runtime Environment specification name
java.class.version Java class format version number
java.class.path Java class path
java.library.path List of paths to search when loading libraries
java.io.tmpdir Default temp file path Util para crear ficheros temporales en /tmp o c:\tmp
java.compiler Name of JIT compiler to use
java.ext.dirs Path of extension directory or directories
os.name Operating system name Nombre del sistema operativo
os.arch Operating system architecture
os.version Operating system version
user.name User's account name Nombre del usuario.
user.home User's home directory Directorio por defecto del usuario.
user.dir User's current working directory Directorio en el que está corriendo el programa java. Util para poner path relativos.

continue reading

Obtener tamaño/Dimensión de la pantalla en java

JAN29

Para obtener el "tamaño" de la pantalla, asi como otros atributos como la "resolucion" en java, se hace uso de la clase abstracta Toolkit.Esta clase nos otorga los metodos getScreenSize() que retona las dimensiones de pantalla en pixeles y getScreenResolution(), que retorna un valor en PPP (puntos por pulgada).



import java.awt.Dimension;
import java.awt.Toolkit;
/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class Main {

    public static void main(String[] args) {
        // TODO code application logic here
        //Obtiene el tamaño de la pantalla
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        //obtiene la resolucion de la pantalla en PPP (Puntos por pulgada)
        int sr = Toolkit.getDefaultToolkit().getScreenResolution();
        //muestra la informacion por la consola de java
        System.out.println("Tamaño de pantalla: " + d.width + "x" + d.height + ", definición: " + sr + " ppp");
    }
}


mas info en: http://java.sun.com/

continue reading

16/2/10

Reproductor de videos en java: El Playlist y un poco de teoria

JAN29


Continuando con el tutorial "Reproductor de videos en java", en esta cuarta entregase hace un alto para dar una pequeña explicacion sobre la dimension y conformacion del proyecto, asi como de un poco sobre la "encapsulacion" propia de lenguajes de Objetos.

Hace su aparicion la clase "playlistclass.java", encargada de la gestion de una "lista de reproduccion", como esta clase no tiene que ver directamente con lo que es la API de JMF, decidi no explicarla en video, sino mas bien colocar el codigo integro de la clase que esta por demas comentando.

Esta largito la clase, pero es realmente sencilla.

package reproductorjava;

import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultListModel;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class playlistclass {
private Vector urlCompleto;
private Vector name;
private static FileNameExtensionFilter filter = new FileNameExtensionFilter("Archivo de video","mpg","mpeg");

    public playlistclass(){       
        //se crea dos vectores para almacenar la "url completa" y el "nombre" del archivo de video
        // los vectores tienen una capacidad inicial de 10 y un incremento de 2
        urlCompleto = new Vector(10,2);
        name = new Vector(10,2);       
    }
    
    /* Añade a los vectores la url y el nombre de un archivo     
     */
    public void setVideo(URL u, String s){                      
        urlCompleto.addElement(u);
        name.addElement(s);
    }
    
    /* Dado el nombre de un archivo de video, este es buscado en el vector y si
     es encontrado y removido de "ambos vectores" */
    public void removervideo(String s){
        name.removeElement(s);
        Enumeration n = name.elements();                                
            while(n.hasMoreElements()){
                String elemento=(String)n.nextElement();               
                if(elemento.equals(s)){                     
                   urlCompleto.remove(elemento);
                    break;
                }                 
            }        
    }
   
    /* Dado un string con el nombre de un video, se busca su posicion en el vector
     * y luego se retorna la posicion de la URL completa
     */
   public URL getURL(String s){            
        Enumeration n = name.elements();            
        URL turl=null;
            int d = 0;
            while(n.hasMoreElements()){
                String elemento=(String)n.nextElement();               
                if(elemento.equals(s)){ 
                    turl = (URL) urlCompleto.elementAt(d);
                    break;
                }
                 d++;
            }            
        return turl;
    }   
    
   /* devuelve la url dado la posicion del mismo */
   public URL getLastURL(int d){            
       URL turl = (URL) urlCompleto.elementAt(d);        
       return turl;
    }   
   
   /* Metod que muestra una ventana de dialgo para añadir "archivos" al playlist
    * hace uso del metodo anterior "setvideo"
    */
    public void Dialog(DefaultListModel modelo){
       JFileChooser fileChooser = new JFileChooser();       
       fileChooser.setFileFilter(filter);
       int result = fileChooser.showOpenDialog(null);  
       if ( result == JFileChooser.APPROVE_OPTION ){
            try {           
                //se asigna a mediaURL el archivo de video seleccionado
                URL url = fileChooser.getSelectedFile().toURL();          
                String namefile = fileChooser.getSelectedFile().getName();
                //coloca video 
                setVideo(url, namefile);   
                //añade a playlist
                modelo.addElement(namefile);                                             
            } 
            catch (IOException ex) {                
                Logger.getLogger(playlistclass.class.getName()).log(Level.SEVERE, null, ex);
            } 
        }
    }
    
}

Resumen: Esta clase "playlistclass.java", crea un playlisy utilizando vectores, dada la magnitud del proyecto, este simple playlist, solo almacena la URL del archivo de video en un vector, y en otro vector almacena el nombre del video para su posterior uso. Para utilizar esta clase en netbeans y en otros IDE similares, esta clase presenta una ventana de dialogo (JFileChooser), el cual hace uso de un filtro (FileNameExtensionFilter) para mostrar solamente videos con extension MPG. Asi mismo contiene los metodos necesarios para le gestion del Playlist (Añadir, remover, y obtener la URL de los archivos almacenados)

El proyecto no es complicado, hasta ahora solo hace uso de una clase "Paneldevideo.java" y de una clase de tipo Interfaz, que gracias a la encapsulacion podemos cambiarla facilmente

[ENLACE DE DESCARGA ACTUALIZADO 01/03/2015]
El codigo fuente del proyecto mas archivos de ayuda, esta aqui abajo
El código no esta optimizado y claro que puede ser mejorado, se aceptan criticas constructivas


ENJOY!!!

continue reading

15/2/10

Formularios MDI en Netbeans (Sencillo)

JAN29

 Para crear Frames internos, tambien conocidos como "formularios MDI" (Interfaz de Multiples Documentos) en Netbeans, debemos hacer uso de los objetos JInternalFrame (el formulario hijo en si)  y de una JFrame normal que servira como formulario padre.


El proyecto:

Paso 1. Crea un nuevo proyecto en Netbeans, llamalo "MDIjava", a este nuevo proyecto agregale un JFrame al cual llamaras "papa", despues añade los objetos JMenuBar, JMenu y JDesktopPane, este ultimo es una subclase de JLayeredPane que nos permite manipular frames internos

Paso 2: Ahora para insertar los frames internos, nos dirigimos al paquete de nuestro proyecto, hacemos clic derecho y escogemos NEW -- OTHER -- en la ventana que nos aparece, buscamos SWING GUI FORMS y JINTERNALFRAME, presionas siguiente y coloca un nombre al form, "Hijo1" y para terminar FINISH.
Realiza este paso una ves mas, pero al nuevo frame llamalo "Hijo2".
Esto te creara un nuevo Frame vacio, debes tener algo como esto hasta ahora
Paso 3: Has clic derecho sobre el JInternalFrame "Hijo1" y elige "propiedades" (properties), y realiza los siguientes cambios :
Realiza el mismo paso para el JInternalFrame "Hijo2"

Paso 4: Puedes trabajar con los nuevos frames "Hijo 1" e "Hijo 2" independientemente, y añadirles los objetos para trabajar en ellos.

Paso 5: Para llamarlos desde el jFrame padre, clic derecho sobre uno de los JMenu y escoge EVENTS - ACTION - ACTIONPERFORMED
El codigo para crearlos es el mismo que si de un JFrame se tratara, con la diferencia de que despues hay que añadirlos al JDesktop, el codigo es el siguiente:

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        // Se crea el objeto       
        Hijo1 h1 = new Hijo1();
        // se añade al jDesktopPane
        jDesktopPane1.add(h1);
        //se muestra en pantalla
        h1.show();
    }

Lo mismo para el "Hijo 2" y ya esta
Codigo fuente aqui abajo
Click para descargar

continue reading

14/2/10

Ventana sin bordes en Java

JAN29


La clase WINDOW desciende de Container de la biblioteca JAVA.AWT, esta clase permite implementar ventanas sin bordes y sin menus.
Esta clase es la base para ventanas mas familiares como FRAME (mas completa) y DIALOG (implementa ventanas de dialogo).

CONTAINER---WINDOW---FRAME
                                    ---DIALOG

La clase que te presento a continuacion, implementa una pequeña ventana "sin bordes", ademas coloca unos objetos como labels, button, y panel, ademas de colocar una imagen con JLabel. Tambien puede implementarse acciones a los objetos. Este tipo de objeto no puede crearse graficamente desde java, todo tiene que ser escrito en codigo java puro, creo que existen algunos herramientas para utilizar este objeto con eclipse o j++, no estoy seguro.

El codigo esta por demas comentado


import java.awt.Button;
import java.awt.Color;
import java.awt.Event;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.Window;
import javax.swing.JLabel;

/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class miventana extends Window{
    
    public miventana(Frame parent){
        super(parent);                
        //tamaño de la ventana
        resize(400, 300);        
        //contenedor
        Panel p = new Panel();
        //color de fondo
        p.setBackground(new Color(100,40,90));
        //JLabel con imagen de fondo
        JLabel lbImagen = new JLabel();
        //se carga la imagen en el JLabel
        lbImagen.setIcon(new javax.swing.ImageIcon(getClass().getResource("banner.jpg")));        
        p.add(lbImagen);
        //Label simple
        p.add(new Label("Ventana sin bordes"));        
        // TexFields
        p.add(new TextField("by Mouse 2010"));
        //un par de botones
        p.add(new Button("Cerrar"));
        p.add(new Button("Cancelar"));
        add("Center", p);
        //posicion de la ventana
        move(400, 300);
    }

    /* accion para el boton CERRAR */
    @Override
    public boolean action(Event evt, Object arg)
    {
        boolean result = false;
        if("Cerrar".equals(evt.arg))
        {            
            result = true;
            //salir de aplicacion
            System.exit(0);            
        }
        return result;
    }   
}

El tipo de uso que se le puede dar a este tipo de ventana, creo que es más que obvio

Aqui abajo una vista mas amplia de como queda en pantalla

Mas claro agua, pero por si la dudas, bajate el codigo desde aqui. escrito en netbeans 6.0
Click para descargar

continue reading

Objeto Vector en Java

JAN29

Un vector en java es un objeto al igual que un array que permite almacenar otros objetos, con la diferencia de que en un array se conoce la cantidad de objetos a almacenar, mientras que en un vector esta cantidad varia segun se vaya insertando objetos, osea crece automaticamente cuando este alcanza su dimension inicial.

Crear un vector
Se  puede crear un vector de dos maneras
/*De esta forma se crea un vector con un tamaño e incremento de 10*/
Vector mivector = new Vector(); 
/*Aqui se crea un vector con tamaño de 10 y un incremento de 5*/
Vector mivector = new Vector(10,5);

Añadir elementos a un vector
/*Añade un elemento a continuacion del ultimo elemento añadido*/
mivector.addElement("Hola Mundo");  
/*Añade un elemento en la posicion numero 6, ojo con esto*/
mivector.insertElementAt("pepe",5); // es correcto no me equivoque, se descuenta en uno

Eliminar elementos de un vector
La eliminacion se realiza de igual forma
/*elimina un objeto */
mivector.removeElement("objeto a eliminar");
/*elimina un objeto de una posicion especifica*/
mivector.removeElementAt("Objeto a eliminar", posicion);
/*Elimina todos los objetos del vector*/
mivector.removeAllElements();

Buscar un elemento.
Este metodo es importante, ya que te sirve para buscar un elemento en un vector comparando con un parametro de entrada.


Enumeration n = mivector.elements();
            boolean encontrado = false;
            int i = 0;
            while(n.hasMoreElements()){
                String elemento=(String)n.nextElement();
                i++;
                if(elemento.equals(txtParametro.getText())){                                                
                    encontrado=true;
                    break;
                }
            }
            if (encontrado)
            {JOptionPane.showMessageDialog(null, "Elemento encontrado en posicion ["+ i + "]");}
            else
            {JOptionPane.showMessageDialog(null, "Elemento NO encontrado");}

Como se ve el codigo, se hace uso del objeto "Enumeration", para generar una serie de elementos de un vector. luego se ira extrayendo un elemento a la ves con "nextElement()" y comparandolo con un paramatro, en este caso, "txtParametro.getText()" (un JTextfield), la variable "i" solo nos permite capturar la posicion en el que fue encontrado el objeto.

Para una mejor comprension, este pequeño programa te muestra de una forma grafica como se manipula un vector.
El codigo fuente en netbeans 6.0
Click para descargar

continue reading

10/2/10

Añadir/Eliminar elementos de JList en Netbeans

JAN29

Aqui se explica los pasos para añadir y eliminar elementos de un JList en Java y Netbeans.

El proyecto:
1. Crea un nuevo proyecto y añade un JFrame, despues coloca los siguientes elementos:

2. Se hara el uso del objeto DefaultListModel al que llamaremos "modelo", esto nos crea una lista vacia; tambien se usara un String donde se almacenara los nombres de los archivos que cargaremos en el JList, este se llamara "name";  por ultimo, para llevar un control de los elementos que se introduciran en el JList, se hace uso de una variable de tipo Entero (int), la que se llama "Seleccion", esta se inicializa en "-1".

3. Se inicializa el objeto " modelo" junto con el resto de los componentes


public JFrame1() {
        initComponents();
        modelo =   new DefaultListModel();
        LISTA.setModel(modelo);
    }

4.En el Objeto "cmdAnadir", se coloca las siguientes lineas de codigo:


 private void cmdAnadirActionPerformed(java.awt.event.ActionEvent evt) {
        JFileChooser fileChooser = new JFileChooser();       
       int result = fileChooser.showOpenDialog(null);  
        if ( result == JFileChooser.APPROVE_OPTION ){            
                name = fileChooser.getSelectedFile().getName();                
                modelo.addElement(name);                              
            }
    }
Este codigo abre una ventana de dialogo donde se puede buscar el archivo a insertar en el JList.

5. En el objeto JButton: cmdRemover:


private void cmdRemoverActionPerformed(java.awt.event.ActionEvent evt) {
        if (Seleccion>=0){
            modelo.removeElementAt(Seleccion);            
        }
    }
Explicacion: Si se tiene un objeto de la lista JList seleccionada, se procedera a su eliminacion.

6. Por el ultimo el codigo en el objeto JList: LISTA es el siguiente:


private void LISTAValueChanged(javax.swing.event.ListSelectionEvent evt) {
        // TODO add your handling code here:
        Seleccion = LISTA.getSelectedIndex();
        if (Seleccion >=0){
            jLabel1.setText("Archivo seleccionado: " + Seleccion);
        }
        else
        {
            jLabel1.setText("Archivo seleccionado:");
        }
    }

Solo falta compilar el proyecto y ejecutar el programa.

Notese que ya no se toca el objeto JList, sino solo se manipula el objeto DefaultListMode, y al insertar o eliminar elementos de este objeto, automaticamente se actualiza en el el JList. eso es todo

Bajate el codigo desde aqui.

continue reading

4/2/10

Personalizar/Configurar reproductor de video de youtube

JAN29

YTube es una software que nos permitira personalizar el reproductor de YouTube dentro de un serie de opciones predefinidas. 

El procedimiento es simple, sólo necesitamos indicar el ID del vídeo que aparece al final de su dirección URL; por ejemplo, en el caso de http://www.youtube.com/watch?v=_uhSSAv3o4M, el código es _uhSSAv3o4M.

Las opciones para personalizar permiten escoger los colores del reproductor sin limitarnos a las combinaciones predeterminadas que ofrece YouTube o configurar los parámetros de reproducción del vídeo. 

Las opciones que tenemos a disposición son:

    * Quitar puntuacion y titulo del video
    * Reproducción automática
    * Idioma del reproductor (EN: Ingles, ES: Español)
    * Colocar borde.
    * Colores del reproductor
    * Reproducción a pantalla completa.
    * Repetición automática.
    * Tamaño del reproductor

Una ves personalizado el reproductor de youtube, YTube te ofrece el codigo necesario para colocarlo en tu pagina web, blogger, wordpress, foros, etc.


Requerimientos mínimos
  • El programa no necesita de instalación.
  • Sistema Operativo: Windows XP, Vista
  • RAM: la minima

Bajatelo desde el siguiente enlace

continue reading

Ejercicio Resuelto: Diagrama E-R "Universidad"

JAN29

Se desea simular el comportamiento de una universidad cualquiera, atendiendo a la siguiente especificación.

Cada alumno se matricula de una serie de asignaturas en las que obtendrá una calificación. Un alumno puede matricularse de la misma asignatura varias veces y de una asignatura pueden matricularse muchos alumnos.

Cada asignatura es impartida por un único profesor y un profesor puede dar clase de muchas asignaturas. Cada profesor pertenece a un departamento.

De los alumnos almacenaremos la cedula de identidad (CI), nombre, primer apellido, segundo apellido, calle, ciudad, provincia, teléfono, fecha de nacimiento y estado civil. El estado civil de un alumno puede ser el siguiente: S:Soltero C:Casado V:Viudo P:Separado D:Divorciado.

De las asignaturas se guarda el código, nombre completo, número de créditos y un campo de observaciones.

De cada profesor tenemos información del CI, titulación que posee, nombre y primer apellido.

De los departamentos se tiene como datos su código y nombre.

ALUMNO(CI, Nombre, ApPaterno, ApMaterno, Fono, Calle, Ciudad, Provincia, FNac, EC)
ASIGNATURA(Codigo, Nombre, Creditos, CI_Prof, Observaciones)
MATRICULA(CI, Cod_Asig, Fecha, Nota)
DEPARTAMENTO(Codigo, Nombre)
PROFESOR(CI, Nombre, ApPaterno, Titulo, Cod_Dep)

continue reading

1/2/10

Ocultar imagenes con ADS (Alternate Data Stream)

JAN29


Para quienes no les guste mucho los comandos DOS y esten mas acostumbrados a la interfaz grafica de windows, escribi un sencillo programa en basic el cual realiza los pasos necesarios para crear un archivo con ADS desde dos imagenes JPG, GIF o BMP. como se vio en post anteriores sobre ADS

EL codigo es sencillo, simplemente se reduce a ejecutar mediante Basic la consola de windows y presentar al usuario una interfaz sencilla y facil de utilizar.

la funcion principal se llama Ejecuta_DOS y hace exactamente eso, ejecuta la consola de windows, ayudandose para ello del SHELL de windows. Recibe como parametros (t1) la direccion del archivo a ocultar, (t2) la direccion del archivo que nos servira para ocultar y (p) la palabra clave para poder recuperar la imagen.

¿como se utliza?
El menu consta de dos opciones, "Ocultar imagen" y "Ver imagen"
la primera opcion permite seleccionar dos imagenes, introducir una palabra clave y cuando se presione el boton "Ocultar con ADS" se procede a invocar la consola y ocultar el archivo.

Para recuperar un archivo se escoge la segunda opcion "Ver imagen", se escribe la palabra clave con que se guardo la primera ves y se presiona "ver imagen".

Para bajarte el archivo clic aqui
tamaño: 122 kb
Esta hecho en VB, no utiliza ninguna OCX ajena a windows, asi que en el RAR, solo se encuentra el  ejecutable, funciona bajo windows, 98, 2000 y XP. cualquier problema, favor informar.

continue reading

Post recomendado