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
Que te pareceria poder crear los siguientes Jpanel
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; } }


Daniel Dario Morales Salas escribió
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 !!!!
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
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