Crear Un Panel transparente

Publicado: noviembre 26, 2007 en Blogroll, General, NetBeans, Swing
Etiquetas: , , , ,

Hola amigos luego de una ausencia(por motivos laborales) estoy de nuevo aqui para escribir un nuevo tema en esta ocaci’on vamos a crea un panel ue va a tener un aspecto semitransparente

El panel va a quedar de esta forma:

Panel Semitranperente

El codigo fuente para crearlo es package swingec.panel;

Nota la clase JPanelRound la podemos ver aqui:

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

/**
*
* @author Edisoncor
*/
public class JPanelTransparente extends JPanelRound{

private float tran= 0.8f;

public JPanelTransparente(){

}

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

}

Donde la variable tran representa el nivel de transparencia que se desea para el panel, tambien podemos observar

AlphaComposite old = (AlphaComposite) g2.getComposite(); que salve la composicion actual del panel, luego
g2.setComposite(AlphaComposite.SrcOver.derive(getTran())); le damos la nueva informacion para el panel, luego se llama a super.paintComponent(g); para que los componentes agregados se dibujen y por ultimo restauramos la composicion  de Graphics con :  g2.setComposite(old);

Update

Ahora puedes encontrar este panel y otros componentes en EdisoncorSx que es una recopilación de estos trabajos y que iré  escribiendo de como utilizarla con ejemplos

Y de como aplicar otras caracterisiticas de jFrame transpaente

About these ads
Comentarios
  1. [...] Comentarios (RSS) « Crear Un Panel transparente [...]

  2. Fernando dice:

    Hola me parece muy interesante tu ejemplo y me surgió una pregunta, ¿cómo se podría hacer que un jframe sea tranparente, que se puedan ver las palicaciones que hay detrás?

  3. Abelardo dice:

    Hola. Me parece muy interesante lo que se publica….

    Tengo varias preguntas…

    ¿Cómo se puede hacer para que un JFrame tenga el mismo aspecto que el JPanel, es decir, que tenga los bordes redondeados?

    ¿Cómo cambiar el aspecto de un JFrame para que, aparte de bordes redondeados, se elimine el aspecto de una ventana (que la barra de titulo desaparezca) y se pueda cambiar su aspecto?

    Muchas gracias por este magnífico sitio web.

  4. John dice:

    Como utilizo esta clase para colocar una clase quetiene un panel transparente, la verdad no la he podico utilizar …
    me pueden colaborar ….
    Gracias…!!

  5. John dice:

    Como utilizo esta clase en JCreator para colocar un panel transparente, la verdad no la he podico utilizar …
    me pueden colaborar ….
    Gracias…!!

  6. tanero dice:

    en esta linea sale q el metodo derive no existe, que debo hacer

    g2.setComposite(AlphaComposite.SrcOver.derive(getTran()));

  7. Harttyn dice:

    amigo hice el ejemplo pero al momento de agregar el panel a un JFrame no lo agrega mi pregunta es la siguiente
    como puedo agregarla si el construcor de la clase no tiene codigo.
    gracias.

  8. andres Badel dice:

    Buenas tengo una pregunta como hago para colocarle un JScrollPane a un JPanel?? porq hasta ahora no he podido y he intentado de todas las maneras posibles. Si alhuien tiene una idea por favor.

    Gracias

  9. OctiCoCo dice:

    El codigo lo coipe tal cual 3 veces y nunca se hizo transparente

  10. nobita dice:

    el jframe no se le puede cambiar redondeado ya que es un conponente pesado y dependiente del sistema operativo por lo tanto no se le puede moificar como al jpanel y los otros y ariba los pajazos

  11. Hola amigo del JScroll… aca te la dejo… es un poco bruto erpo funciona

    JPanel panel=new JPanel()
    JScrollPane scrollpane=new JScrollPane(panel);
    scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    scrollpane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    scrollpane.setPreferredSize(new Dimension(x,y));

    Fijate que si no le pones esas lineas de horizontal y vertical no aparecen las barras. Y la dimension ponele una considerable.

  12. Rafe dice:

    hola!!!… :( no pude utilizar g2.setComposite(AlphaComposite.SrcOver.derive(getTran()));
    sale un error:
    Error(22,24): method derive(float) not found in class java.awt.AlphaComposite

    debo de importar algo mas que las librerias que pusiste???? :S

  13. n_n dice:

    La verdad no se como adaptar las clases a mi proyecto para crear ese efecto de transparencia…algun consejo por favor??

    salu2

  14. gio dice:

    Muchas gracias me sirvió de mucho, espero seguir mas de cerca publicaciones como esta, y no solo eso sino también contribuir un poco, que tengan un buen día y Dios los bendiga.

  15. Nusesabe dice:

    No funciona. He hasta probado de hacerlo editar de un JPanel, lo he metido en un JLayeredPanel y en lugar de verse lo que hay detras, lo que hace es poner la imagen que le da la gana, es mas, si pongo botones transparentes en este panel, al pasar el raton por encima (lo cual provoca el repintado) coje para repintar el ultimo lugar por el que he pasado el raton, es decir… NO FUNCIONA, hace lo mismo que si le pongo setBackgrount(new Color(0,0,0,0));

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s