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

14/12/09

jPanel con color degradado de fondo en netbeans

JAN29



Para añadir un interesante y atractivo efecto a nuestros proyectos en netbeans como es el degradado de colores, crearemos un jPanel personalizado, esto puede hacerce de varias maneras, en este tutorial lo haremos de la manera mas sencilla posible.

Paso 1: Crea un nuevo proyecto en Netbeans y añade un jFrame, a este añade 3 jPanels y acomodalos como se ve en la imagen.


Paso 2: En el proyecto crea un nueva clase, llamala jpColor.java, este es el codigo que debes colocar en la clase.


import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.util.Random;

/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class jpColor extends javax.swing.JPanel{
    private Color color1 = new Color(0,0,0);
    private Color color2 = new Color(0,0,0);
    
    public jpColor(){
    }
    
    public jpColor(Color c1, Color c2){
        color1 = c1;
        color2 = c2;        
    }
    
    @Override
    public void paint(Graphics g) {    
        Graphics2D g2 = (Graphics2D) g.create();
        Rectangle clip = g2.getClipBounds();                        
        g2.setPaint(new GradientPaint(0.0f, 0.0f, color1.darker(),0.0f ,getHeight(), color2.darker()));        
        g2.fillRect(clip.x, clip.y, clip.width, clip.height);        
    }
    
    public void setRandomColor(){
        Random rand = new Random();
        this.color1 = new Color(rand.nextInt(255),rand.nextInt(255),rand.nextInt(255));
        this.color2 = new Color(rand.nextInt(255),rand.nextInt(255),rand.nextInt(255));
    }
    
    public void setVistaColor(){        
        this.color1 = new Color(66,111,166);
        this.color2 = new Color(103,174,118);        
    }
    
}

Explicacion: Lo que hacemos es crear un nuevo jPanel sobreescribiendo el metodo PAINT. Esta nueva clase consta de dos constructores, uno que no contiene elementos y el segundo que recibe como parametros de entrada, dos colores que los utilizara para el degradado.

Ademas cuenta con el metodo setRandomColor(), este metodo aplica un color aleatorio a los atributos Color1 y Color2, el metodo paint es el encargado de tomar estos valores y aplicarlos al jPanel.

El metodo setVistaColor(), muestra como colocar un valor ya predefinido por el usuario, util si no quieres que tu proyecto paresca un circo con todo tipo de colores.

Paso 3: Ahora en el jFrame, mas propiamente en su constructor, crea una referencia al objeto jpColor para cada jPanel que tengas en el jFrame.


public class paintform extends javax.swing.JFrame {
    
    /** Creates new form paintform */
    public paintform() {
        initComponents();          
        
        //Objeto jPanel con color VistaColor
        jpColor jpVista = new jpColor();
        jpVista.setSize(this.getSize());
        jpVista.setVistaColor();
        jPanel2.add(jpVista);
        
        //Objeto jPanel con color  aleatorio
        jpColor jpRandom = new jpColor();
        jpRandom.setSize(this.getSize());
        jpRandom.setRandomColor();
        jPanel1.add(jpRandom);
        
        //Objeto jPanel con color personalizado
        Color c1 = new Color(255,100,45);
        Color c2 = new Color(23,140,189);
        jpColor jpmicolor = new jpColor(c1,c2);
        jpmicolor.setSize(this.getSize());        
        jPanel3.add(jpmicolor);       
    }


Eso es todo, aqui tenemos el resultado

7 comentarios:

Anónimo dijo...

Buenas men que buen aporte, pero imaginate que tengo un problema.. me marca error en el "add" de todos los objetos y no tengo idea de como solucionarlo
Gracias por la ayuda
Mi email es : pio7sergio@gmail.com

Anónimo dijo...

Excelente aporte !!!!

Anónimo dijo...

oie men disculpa tengo una duda, resulta que ya hise un fondo degradado en un jpanel y tengo 3 jpanel pero encima del que hice el fondo degradado, osea tengo un jpanel y dentro de el otros 3 y lo que quiero hacer es que los jpanels que estan por encima quiero que tome las mismas propiedades del jpanel que esta en el fondo y mi pregunta es como hacerlo, lo unico que se me ocurrio es que poner el que esta atras en public y los que estan por enfrente protected para que pueda heredar sus propiedades o viceversa pero no me funciona y me gustaria que hechara la mano en esto se lo agradeceria mucho y esta execelente su aporte ;) mi nombre es alan estare chekando el post cada rato espero y me ayude =)

Anónimo dijo...

Muchisimas gracias por tus aportes:
actualmente estoy migrando a de vb6 a java tus ejemplos son muy buenos.

Anónimo dijo...

Gracias por tu aporte, me ayudo bastante le das más estética.
Mi pregunta es si se puede hacer lo mismo pero con el fondo del jFrame?

Marcos MT dijo...

hola buen dia! gracias muy buen aporte... pero el difuminado esta muy pobre apenas y se matiza la diferencia de tonos. se puede hacer mas notorio? grax

Anónimo dijo...

Una pequeña observación, cuando aplicas el setSize debes tomar el tamaño del panel no del formulario, es decir en ves de esto jpVista.setSize(this.getSize()) se debe colocar jpVista.setSize(jpVista.getSize()) ya que si el panel es de un tamaño menor al formulario los colores no se van a distribuir correctamente.

Post recomendado