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; [...]

Code Army Bolivia

9/10/10

Crear componentes Swing Java con netbeans

JAN29

Hace tiempo me pidieron que realice un tuto para la creacion de interfaces mas amigables al usuario utilizando java, si bien netbeans tiene una biblioteca bastante amplia, a veces es mejor crear nuestros propios controles para darle un toque personal y profesional a nuestras aplicaciones.

¿que necesitamos?

1. Un programa de diseño grafico, photoshop, gimp o cualquier otro
2. El IDE netbeans 6.0, es el que utilizaremos en el tuto
3. GANAS DE APRENDER

Manos a la obra

En este tutorial, realizaremos la construccion de un boton tipo "windows Vista" utilizando el objeto JLabel de Java


1. Con la aplicacion de diseño grafico, realizamos el trabajo para crear las imagenes que utilizaremos en el Componente, estas deben ser tres para representar los 3 estados que tiene un boton (PRESIONADO, DENTRO Y FUERA), si no sabes como, date una vuelta por este tuto: "CREAR BOTON ESTILO WINDOWS VISTA"


Tambien necesitamos 2 pares de iconos de 16x16 pixeles y de 32x32 pixeles, estos en formato gif, veremos su utilidad mas adelante

3.  Ahora abrimos el netbeans y creamos un nuevo proyecto, en las opciones escogemos JAVA - JAVA CLASS LIBRARY, y le das un nombre, por ejemplo jcMouseButtons

Esto solamente nos crea un proyecto vacio, entonces crearemos 2 paquetes (clic derecho sobre SourcePackages - New - New Java Package...) el paquete jcVistaButtons, donde colocaremos los archivos *.java y el paquete ico, donde estaran las imagenes

a buen entendedor ...

4. En el paquete ico, colocamos todas las imagenes que utilizaremos en nuestro componente, y en el paquete jcVistaButtons, creamos dos clases, jcVistaButtons.java y jcVistaButtonsBeanInfo, dependiendo del nombre que le des a tu componente, el segundo SIEMPRE debe tener el mismo nombre, de la manera Nombre_de_tu_componente_BeanInfo.java, sino no se reconocera esta clase.

Hasta el momento debes tener algo como esto

5. En la clase jcVistaButtons.java, copia/pega/y analiza el siguiente codigo:


01 package jcVistaButtons;
02 import java.awt.Cursor;
03 import java.awt.Dimension;
04 import java.awt.event.MouseEvent;
05 import java.awt.event.MouseListener;
06 /**
07  * @web http://jc-mouse.blogspot.com/
08  * @author Mouse
09  */
10 public class jcVistaButtons extends javax.swing.JLabel implements MouseListener {
11 
12     public  jcVistaButtons(){
13         super();
14         //se le da un tamaño        
15         this.setPreferredSize(new Dimension(260,60));
16         //se le coloca una imagen
17         this.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ico/jcbuttons1.png")));               
18         //se cambia de cursor default por otro, el de la "manito"
19         this.setCursor(new Cursor(Cursor.HAND_CURSOR));       
20         //se añade los eventos del mouse
21         this.addMouseListener(this);                
22     }
23 
24     public void mouseClicked(MouseEvent e) {        
25         
26     }
27 
28     public void mousePressed(MouseEvent e) {
29         this.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ico/jcbuttons3.png"))); 
30     }
31 
32     public void mouseReleased(MouseEvent e) {
33         this.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ico/jcbuttons2.png")));                       
34     }
35 
36     public void mouseEntered(MouseEvent e) {
37         this.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ico/jcbuttons2.png")));                       
38     }
39 
40     public void mouseExited(MouseEvent e) {
41         this.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ico/jcbuttons1.png")));               
42     }   
43 }

Esta clase, se extiende de la clase JLabel por tanto tambien heredara todos sus propiedades, tambien le añadimos un MouseListener para capturar los eventos del mouse; tambien para personalizar nuestro boton, cambiamos el Cursor por defecto, por el de la "manito". Las imagens de los botones, se colocan cada uno en su respectivo sitio para que respondan al mouse y cambien dinamicamente.

6. Para personalizar aun mas nuestro componente y darle un toque profesional, en la clase jcVistaButtonBeanInfo, colocamos el codigo:


01 package jcVistaButtons;
02 import java.awt.Image;
03 import java.beans.*;
04 /**
05  * @web http://jc-mouse.blogspot.com/
06  * @author Mouse
07  */
08 public class jcVistaButtonsBeanInfo extends SimpleBeanInfo{
09     Image icon;
10     Image icon32;
11     Image iconM;
12     Image icon32M;
13     
14     public jcVistaButtonsBeanInfo(){
15         icon = loadImage("/ico/jc16c.gif");
16         icon32 = loadImage("/ico/jc32c.gif");
17         iconM = loadImage("/ico/jc16m.gif");
18         icon32M = loadImage("/ico/jc32m.gif");
19     }
20     
21     @Override
22     public Image getIcon(int i){
23         switch(i)
24         {
25         case 1:
26             return icon;
27 
28         case 2:
29             return icon32;
30 
31         case 3:
32             return iconM;
33 
34         case 4:
35             return icon32M;
36         }
37         return null;
38     }
39 }

Esta clase, Bean que declaramos, que se extiende de SimpleBeanInfo es la encargada de hacer reconocer las caracteristicas de nuestro componente por el IDE, por ejemplo el icono que representara al Swing que creamos en la paleta de componentes de netbeans, tambien puede almacenar una descripcion, lista de propiedades, referencias y metodos que definen al bean.

7. Si llegaste hasta aqui, solamente nos falta con compilar y crear el *.JAR de nuestro componente, para esto nos posicionamos en el panel del proyecto, realizamos un clic derecho sobre este y elegimos la opcion, BUILD o sea CONSTRUIR. El jar que se crea estará en la carpeta DIST del proyecto. Nuestro componente esta listo para ser utilizado.



Para utilizar este componente, primero debemos instalarlo/añadirlo a nuestra paleta de componente de netbeans, esto y como queda el resultado final de nuestro componente realizando un pequeño programa de prueba, en el siguiente video.

19 comentarios:

Edward dijo...

No es por hacer spam pero, aquí tengo un he hecho una forma de hacer botones con java 2D.

Saludos

Edward dijo...

Me olvidé del link, bueno ahí está:

http://misoftwareyyo.blogspot.com/2010/10/boton-con-estilo-en-java.html

reston dijo...

Excelente me gusto mucho

Adrian dijo...

JMouse, todos tus post son excellentes.
Quisiera saber si me podrias responder una duda, es sobre los jlabels en netbeans.
Mira, estoy programando un juego de casino, un tragamonedas o tragaperras(como eh encntrado algunos), pero n se como compararlos, para saber si la imagen que se cntiene en cada una es igual a la de los demas,
tengo 3 jlabels, nesesit comparar si la imagen que contienenson iguales entre ellos,
espero prontas respuestas.

mi correo es: adrian_ut_si@live.com
faceBook: www.facebook.cm/pockydj

Mouse dijo...

aqui te dejo un ejemplo de como lo haria yo XD

http://jc-mouse.blogspot.com/2010/12/tragamonedas-comparar-imagenes-en-java.html

Anónimo dijo...

hola buenas noches

el codigo de reproduccion de video me sirvio mucho para un trabajo final de mi semestre

Muchas gracias
atte.Magdiel

Felix Ramon dijo...
Este comentario ha sido eliminado por el autor.
Felix Ramon dijo...

Hola Mouse, sera que podes hablar un poco mas de los Componentes beans? y dejar codigo de los componentes que soles hacer.. Gracias... Saludos y Exitos

Anónimo dijo...

le lanza el error
the component cannot be instantiated. please make sure it is a javaBean component

que podria ser ???

gracias!!!

Anónimo dijo...

es hacer que este cambio en el JFrame, como lo hace en la primera imagen?

Anónimo dijo...

y la propiedad text del button ? me sale al costado del boton y si quiero y esa propiedad

Anónimo dijo...

cuando pongo un icono a un boton se
malogra la imagen

Shikamaru dijo...

Muchas gracias por el tutorial
gracias a el, realice un boton personalizado :D

aqui les dejo el lick, para ke lo puedan descargar, si gustan.
es el archivo .jar, solo para que lo agregen a netbeans

Descripcion:
Es un boton circular, color rojo, al dar un click pasa de rojo a verde y al volver a dar click pasa de verde a rojo, al mantener presionado el boton es amarillo

Descargar .jar:
http://www.mediafire.com/?d1qdnj8n96417fr

Anónimo dijo...

Hola por favor me pueden ayudar necesito crear un nuevo compoennte, un tipo formulario de datos, nombre, apellido, ciudad, telefono, mail, etc
y poder quitar un campo, por ejeplo escojer ciudad y que se quite del formulario, irlo personalizando..

lalybel@hotmail.es

Anónimo dijo...

muy buen trabajo PERO, como se hace para ocultar las clases.java que aparecen al momento de agregar el nuevo componente a la paleta del ide

yo dijo...

Holas! buenisimo tu ejemplo...queria hacer una consulta, suponiendo que cree un boton personalizado que extienda de JButton, y solo le agrego que el nombre a mostrar sea "SALIR"... cada vez que que lo agregue a un formulario saldría con ese nombre.Hay alguna manera de hacer que si modifico el componente original, se actualice en todos los formularios? por ejemplo si cambio el nombre por "EXIT" que se actualice en todos lados. Muchas Gracias!

mouse dijo...

pues si, cuando actualices tu componente, se actualizaran todas las propiedades en los proyectos que hagan uso de ella, pero cuidado al agregar, modificar o eliminar metodos o variables porque puede hacer que se produsca un error, para eso debes llevar un control de tu libreria y comentar todo lo que sea necesario, tambien antes de eliminar un metodo, marcarla primero con la palabra DEPRECATED.

Strparser dijo...

Hola hermano, quisiera que hagas otro tute más avanzado porque el que tienes aquí está muy fácil.

Anónimo dijo...

¿Se puede hacer algo con xml en lugar de imágenes ?

Post recomendado