Edisoncor’s Weblog

Programación en Java desde LOJA

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

}

3 comentarios para “Crear JPanel Degradado”

  1. Hola, probé lo que pusiste en esta entrada y funciona muy bien en un JPanel.

    Queria hacer lo mismo pero con un JTextField y tambien funciona, pero el problema es que no hay manera de pasarle un texto y que lo dibuje, es decir cuando hago un

    MiTextField miTextField = new MiTextField();
    miTextField.setText(“Hola mundo”);

    el texto no se muestra, sin embargo el fondo coloreado si, sabes que se puede hacer en este caso ? la clase MiTextField es la siguiente:

    package org.miscomponentes;

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

    /**
    *
    * @author metalklesk
    */
    public class MiTextField extends JTextField {

    private Color color1 = new Color(102, 255, 102);
    private Color color2 = new Color(51, 102, 255);

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

    saludos !!!!

  2. edisoncor escribió

    Hola Daniel aquí te dejo la solución

    import java.awt.Color;
    import java.awt.GradientPaint;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Paint;
    import java.awt.Rectangle;
    import javax.swing.JTextField;

    /**
    *
    * @author metalklesk
    */
    public class MiTextField extends JTextField {

    private Color color1 = new Color(102, 255, 102);
    private Color color2 = new Color(51, 102, 255);

    public MiTextField() {

    setOpaque(false);
    setText(“Hola como estas”);
    }

    @Override
    protected void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D) g.create();
    //Guardar las características esenciales del JTextfield
    Paint oldPaint = g2.getPaint();
    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);

    setForeground(Color.WHITE);
    //Restaurar características del JTextfield guardadas anteriormente
    g2.setPaint(oldPaint);
    super.paintComponent(g);

    }
    }

    saludos

  3. Oscar escribió

    Hola soy nuevo en programacion en java y me interesa lo de estos JPanel

    pero como hago pa correrlos – me dice que falta un metodo Main

    tengo que crearlo o crear un JFrame

    como hago

Escribe un comentario

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>