Clase para generar gradientes

Publicado: octubre 4, 2007 en General, Swing
Etiquetas:, , , ,
A continuacion dejo una clase que permitira
crear diferentes tipos de efectos degradados
la cual puede ser utilizado en diferentes componentes swing como por ejemplo JPanel

import java.awt.Color;
import java.awt.Component;
import java.awt.GradientPaint;
import java.awt.LinearGradientPaint;
import java.awt.Paint;

/**
 *
 * @author Edisoncor
 */
public class Gradiente {

    public static final int LINEAR_HORIZONTAL= 1;
    public static final int LINEAR_HORIZONTAL_CENTRAL = 2;
    public static final int LINEAR_VERTICAL= 3;
    public static final int LINEAR_VERTICAL_CENTRAL = 4;
    public static final int LINEAR_TRANSVERSAL_IZQUIERDA = 5;
    public static final int LINEAR_TRANSVERSAL_IZQUIERDA_CENTRAL = 6;
    public static final int LINEAR_TRANSVERSAL_DERECHA = 7;
    public static final int LINEAR_TRANSVERSAL_DERECHA_CENTRAL = 8;

    private int aTipo;
    private int x1, x2, y1, y2;
    private Color color1 = new Color(0x666f7f), color2 = new Color(0x262d3d);
    private Component componente;

    public Gradiente(){

    }

    public Gradiente(int aTipo){
        setATipo(aTipo);
    }

    public Gradiente(int aTipo, Component componente){
        setATipo(aTipo);
        setComponente(componente);
    }

    public Paint getGradiente(){
        switch (getATipo()){
        case LINEAR_HORIZONTAL:
            x1=0;
            y1=0;
            x2=componente.getWidth();
            y2=0;
            return new GradientPaint(x1,y1,getColor1(), x2, y2,getColor2());
        case LINEAR_HORIZONTAL_CENTRAL:
            x1=0;
            y1=0;
            x2=componente.getWidth();
            y2=0;
            return new LinearGradientPaint((float)x1,(float)y1, (float)x2, (float)y2,
                    new float[]{0.0f,0.45f,0.55f,1.0f},
                    new Color[]{getColor1(),getColor2(), getColor2(), getColor1()});
        case LINEAR_TRANSVERSAL_IZQUIERDA:
            x1=0;
            y1=0;
            x2=componente.getWidth();
            y2=componente.getHeight();
            return new GradientPaint(x1,y1,getColor1(), x2, y2,getColor2());
        case LINEAR_TRANSVERSAL_IZQUIERDA_CENTRAL:
            x1=0;
            y1=0;
            x2=componente.getWidth();
            y2=componente.getHeight();
            return new LinearGradientPaint((float)x1,(float)y1, (float)x2, (float)y2,
                    new float[]{0.0f,0.40f,0.60f,1.0f},
                    new Color[]{getColor1(),getColor2(), getColor2(), getColor1()});
        case LINEAR_TRANSVERSAL_DERECHA:
            x1=componente.getWidth();
            y1=0;
            x2=0;
            y2=componente.getHeight();
            return new GradientPaint(x1,y1,getColor1(), x2, y2,getColor2());
        case LINEAR_TRANSVERSAL_DERECHA_CENTRAL:
            x1=componente.getWidth();
            y1=0;
            x2=0;
            y2=componente.getHeight();
            return new LinearGradientPaint((float)x1,(float)y1, (float)x2, (float)y2,
                    new float[]{0.0f,0.45f,0.5f,1.0f},
                    new Color[]{getColor1(),getColor2(), getColor2(), getColor1()});
        case LINEAR_VERTICAL:
            x1=0;
            y1=0;
            x2=0;
            y2=componente.getHeight();
            return new GradientPaint(x1,y1,getColor1(), x2, y2,getColor2());
        case LINEAR_VERTICAL_CENTRAL:
            x1=0;
            y1=0;
            x2=0;
            y2=componente.getHeight();
            return new LinearGradientPaint((float)x1,(float)y1, (float)x2, (float)y2,
                    new float[]{0.0f,0.40f,0.60f,1.0f},
                    new Color[]{getColor1(),getColor2(), getColor2(), getColor1()});
        default:
            return new GradientPaint(x1,y1,getColor1(), x2, y2,getColor2());
        }

    }

    public Component getComponente() {
        return componente;
    }

    public void setComponente(Component componente) {
        this.componente = componente;
        x1=0;
        y1=0;
        x2=componente.getWidth();
        y2=componente.getHeight();
    }

    public Color getColor1() {
        return color1;
    }

    public void setColor1(Color color1) {
        this.color1 = color1.darker();
    }

    public Color getColor2() {
        return color2;
    }

    public void setColor2(Color color2) {
        this.color2 = color2.darker();
    }

    public int getATipo() {
        return aTipo;
    }

    public void setATipo(int aTipo) {
        this.aTipo = aTipo;
    }

}
comentarios
  1. anita dice:

    hola!
    hace poco que empece a aprender de java y no tengo nada de experiencia con estas cosas,
    me podrias explicar cual es la forma de utilizar esta clase para darle el color degradado al jpanel?
    he probado de varias formas y no me funciona…:(
    de antemano, gracias!!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s