Edisoncor’s Weblog

Programación en Java desde LOJA

Archivo de 4/10/07

Utilizar Jpanel degradado con la clase Gradiente

Publicado por edisoncor en Octubre 4, 2007

Ahora podemos modificar la clase JPanelgradient
y poder utilizarla con la clase gradiente
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JPanel;


/**
 *
 * @author Edisoncor
 */
public class JPanelGradient extends JPanel{

    private Gradiente gradiente;

    
    public JPanelGradient() {
    }

    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g.create();
        Rectangle clip = g2.getClipBounds();
        if (gradiente!=null)
            g2.setPaint(gradiente.getGradiente());
        g2.fillRect(clip.x, clip.y, clip.width, clip.height);
    }

    public Gradiente getGradiente() {
        return gradiente;
    }

    public void setGradiente(Gradiente gradiente) {
        gradiente.setComponente(this);
        this.gradiente = gradiente;
    }

}

luego podemos realizar lo siguiente para utilizar este panel
/**
 *
 * @author  Edisoncor
 */
public class NewJFrame extends JFrame {
    private Gradiente gradiente3;
    private JEPanelGradient jEPanelGradient1;


    public NewJFrame() {
        initComponents();
    }


    private void initComponents() {
        gradiente3 = new Gradiente();
        jEPanelGradient1 = new JPanelGradient();

        gradiente3.setATipo(Gradiente.LINEAR_VERTICAL);
        gradiente3.setColor1(new java.awt.Color(204, 204, 255));
        gradiente3.setColor2(new java.awt.Color(0, 51, 51));

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jEPanelGradient1.setLayout(new java.awt.BorderLayout());

        jEPanelGradient1.setGradiente(gradiente3);
        getContentPane().add(jEPanelGradient1, java.awt.BorderLayout.CENTER);

        pack();
    }                     

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }                                       

}

y el resultado es
JFrame

Publicado en General, Swing | Etiquetado: , , | Deja un Comentario »

Clase para generar gradientes

Publicado por edisoncor en Octubre 4, 2007

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;
    }

}

Publicado en General, Swing | Etiquetado: , , , , | Deja un Comentario »

Crear JPanel Degradado

Publicado por edisoncor en Octubre 4, 2007

hola a todos a veces al programar en java, 
especialmente con swing  se nos hace muy monotono 
tener que utilizar los clasicos JPanel
 

JPanel


Que te pareceria poder crear los siguientes Jpanel


jpanelgradiente3.jpg
jpanelgradiente2.jpg
jpanelgradiente.jpg














Bien elegantes no el codigo para crearlo esta  aqui

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.LinearGradientPaint;
import java.awt.Rectangle;
import javax.swing.JPanel;


/**
 *
 * @author Edisoncor
 */
public class JPanelGradient extends JPanel{

    private Color color1 = new Color(0x666f7f);
    private Color color2 = new Color(0x262d3d);
    private float x1=0;
    private float y1=0;
    private float x2=getWidth();
    private float y2=getHeight();

    public JPanelGradient() {
    }

    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g.create();

        Rectangle clip = g2.getClipBounds();
        float x=getWidth();
        float y=getHeight();
        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 Color getColor1() {
        return color1;
    }

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

    public Color getColor2() {
        return color2;
    }

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

}

Publicado en Swing | Etiquetado: , , , | 3 Comentarios »