jueves, 11 de junio de 2009

JPanel transparente (Parte 4)

Lo primero que quiero decir es que ya limpie mi escritorio, bueno primero quiero reconocer que algunas ideas que tome para el panel transparente por no decir todo el código lo tome de este blog http://edisoncor.wordpress.com/2007/10/06/jpanel-con-imagen/, un punto mas corregí el código de la parte tres para que quede mejor el borde, después agregare los códigos, bueno antes quiero que observen como van mejorando la interfaz.



Este es el cogido del borde mejorado:

package vista;

/**
*
* @author isaac legorreta
*/

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.RoundRectangle2D;
import javax.swing.JLayeredPane;


public class IPanel extends JLayeredPane
{
private Color color1 = new Color(255,255,255);
private Color color3 = new Color(1,1,1);
private Color color2 = new Color(0,0,0);
private int arcw=25;
private int arch=25;

@Override
protected void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g.create();
float x=getWidth();
float y=getHeight();
g2.setPaint(new GradientPaint(0.0f, 0.0f, getColor1().darker(),
0.0f, getHeight(), getColor2().darker()));
g2.fill(new RoundRectangle2D.Double(0, 0, x, y, getArcw(),getArch()));
g2.setPaint(new GradientPaint(0.0f, 0.0f,getColor3(),
getWidth(), getHeight(),getColor3()));
g2.drawRoundRect(0, 0, getWidth()-1 , getHeight()-1, getArcw()-2,getArch()-6);
g2.setPaint(Color.black);
}

public Color getColor3() {
return color3;
}

public void setColor3(Color color3) {
this.color3 = color3;
}



public int getArch() {
return arch;
}

public void setArch(int arch) {
this.arch = arch;
}

public int getArcw() {
return arcw;
}

public void setArcw(int arcw) {
this.arcw = arcw;
}

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

}

Este el código para que el panel sea transparente:


package vista;

import java.awt.AlphaComposite;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;


/**
*
* @author Edisoncor
*/
public class IPanelTrans extends IPanel{

private float tran= 0.8f;



@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
AlphaComposite old = (AlphaComposite) g2.getComposite();
g2.setComposite(AlphaComposite.SrcOver.derive(getTran()));
super.paintComponent(g);
g2.setComposite(old);
}

public float getTran() {
return tran;
}

public void setTran(float tran) {
this.tran = tran;
}

}

Como agragarlo por si tienen duda en su palette hay una opción beans dan click en choose bean, aparecera una pantalla como la siguiente y escriben lo siguiente vista.IPanelTrans despues la arrastran hasta su FormPanel y listo


En la propiedades aparecera un atributo llamado tran por defecto tiene .5 pero pueden cambiarlo...




Bueno en la parte uno explico como agregarlo a un FormPanel y despues a un Frame, como pueden notar no parece transparente, bueno en blog donde tome este codigo esta un JPanel con imagen de fondo tome el código y lo mejore un poco para que puedan agregar una imagen desde las propiedades (ruta), pero eso lo explicare en la parte 5...

1 comentario:

Jack dijo...

gracias enserio muchas gracias este aporte esta genial, muyy bueno lo recomendare a todo el mundo. bueno a los que conosco ^^