Crear JPanel Degradado

Publicado: octubre 4, 2007 en Swing
Etiquetas:, , ,
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;
    }

}
comentarios
  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 dice:

    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 dice:

    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

  4. Cinthya dice:

    Esta muy beuno lo del panel, muchas gracias. Pero sin embargo tengo una pregunta es que estoy haciendo un proyecto y no encuentro como poner el GridBagLayout al panel no me lo acepta que hago.
    Aqui les dejo el codigo:
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.Color;
    import java.awt.GradientPaint;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Rectangle;

    public class InterfazContraseña extends JFrame{

    private JLabel nombre,contra,titulo;
    private JTextField nom;
    private JPasswordField cont;
    private Container contenedor;
    private NuevoJPanel panel;

    public InterfazContraseña(){
    super(«*Caja Chica*»);

    contenedor = getContentPane();
    GridBagConstraints constraints = new GridBagConstraints();

    panel=new NuevoJPanel();//como ponerle gridbaglayout
    titulo=new JLabel(«Caja Chica»,SwingConstants.CENTER);
    titulo.setFont(new Font(«Blackadder ITC», Font.BOLD,35));
    titulo.setBackground(new Color(255,255,255));
    constraints.gridx = 3;
    constraints.gridy = 5;
    constraints.gridwidth = 3;
    constraints.gridheight = 3;
    constraints.fill = GridBagConstraints.BOTH;
    constraints.anchor = GridBagConstraints.CENTER;
    panel.add(titulo,constraints);
    constraints.fill = GridBagConstraints.NONE;

    contenedor.add(panel);
    setSize(800,600);
    setVisible(true);
    setLocationRelativeTo(null);

    }

    public static void main(String args[]){
    InterfazContraseña n=new InterfazContraseña();
    n.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }

    class NuevoJPanel extends javax.swing.JPanel
    {
    private Color color1 = new Color(255,255,255);
    private Color color2 = new Color(95,95,95);

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

    //Métodos set y get que nos permiten modificar los colores

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

    }

  5. Cinthya dice:

    Ya lo resolvi de todos modos muchas gracias.
    Solo tenia que escribir esto:
    panel.setLayout(new GridBagLayout());

  6. ivan mauricio dice:

    me gustaria seber como haces esos botones con colores degradados e iluminaciones espero me respondas lo que yo quiero hacer es alo como esto

    el video lo hice yo el color de ese boton lo modifique en photoshop pero en si eso lo quisiera hacer en netbeans respondeme a ivanmauricio_gomez@hotmail.com
    GRACIAS

Replica a Daniel Dario Morales Salas Cancelar la respuesta