Paso 2: En el proyecto crea un nueva clase, llamala jpColor.java, este es el codigo que debes colocar en la clase.
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.util.Random;
/**
* @web http://jc-mouse.blogspot.com/
* @author Mouse
*/
public class jpColor extends javax.swing.JPanel{
private Color color1 = new Color(0,0,0);
private Color color2 = new Color(0,0,0);
public jpColor(){
}
public jpColor(Color c1, Color c2){
color1 = c1;
color2 = c2;
}
@Override
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g.create();
Rectangle clip = g2.getClipBounds();
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 void setRandomColor(){
Random rand = new Random();
this.color1 = new Color(rand.nextInt(255),rand.nextInt(255),rand.nextInt(255));
this.color2 = new Color(rand.nextInt(255),rand.nextInt(255),rand.nextInt(255));
}
public void setVistaColor(){
this.color1 = new Color(66,111,166);
this.color2 = new Color(103,174,118);
}
}
Paso 3: Ahora en el jFrame, mas propiamente en su constructor, crea una referencia al objeto jpColor para cada jPanel que tengas en el jFrame.
public class paintform extends javax.swing.JFrame {
/** Creates new form paintform */
public paintform() {
initComponents();
//Objeto jPanel con color VistaColor
jpColor jpVista = new jpColor();
jpVista.setSize(this.getSize());
jpVista.setVistaColor();
jPanel2.add(jpVista);
//Objeto jPanel con color aleatorio
jpColor jpRandom = new jpColor();
jpRandom.setSize(this.getSize());
jpRandom.setRandomColor();
jPanel1.add(jpRandom);
//Objeto jPanel con color personalizado
Color c1 = new Color(255,100,45);
Color c2 = new Color(23,140,189);
jpColor jpmicolor = new jpColor(c1,c2);
jpmicolor.setSize(this.getSize());
jPanel3.add(jpmicolor);
}
Eso es todo, aqui tenemos el resultado
7 comentarios:
Buenas men que buen aporte, pero imaginate que tengo un problema.. me marca error en el "add" de todos los objetos y no tengo idea de como solucionarlo
Gracias por la ayuda
Mi email es : pio7sergio@gmail.com
Excelente aporte !!!!
oie men disculpa tengo una duda, resulta que ya hise un fondo degradado en un jpanel y tengo 3 jpanel pero encima del que hice el fondo degradado, osea tengo un jpanel y dentro de el otros 3 y lo que quiero hacer es que los jpanels que estan por encima quiero que tome las mismas propiedades del jpanel que esta en el fondo y mi pregunta es como hacerlo, lo unico que se me ocurrio es que poner el que esta atras en public y los que estan por enfrente protected para que pueda heredar sus propiedades o viceversa pero no me funciona y me gustaria que hechara la mano en esto se lo agradeceria mucho y esta execelente su aporte ;) mi nombre es alan estare chekando el post cada rato espero y me ayude =)
Muchisimas gracias por tus aportes:
actualmente estoy migrando a de vb6 a java tus ejemplos son muy buenos.
Gracias por tu aporte, me ayudo bastante le das más estética.
Mi pregunta es si se puede hacer lo mismo pero con el fondo del jFrame?
hola buen dia! gracias muy buen aporte... pero el difuminado esta muy pobre apenas y se matiza la diferencia de tonos. se puede hacer mas notorio? grax
Una pequeña observación, cuando aplicas el setSize debes tomar el tamaño del panel no del formulario, es decir en ves de esto jpVista.setSize(this.getSize()) se debe colocar jpVista.setSize(jpVista.getSize()) ya que si el panel es de un tamaño menor al formulario los colores no se van a distribuir correctamente.
Publicar un comentario