Featured Posts

JFrame transparente con EdisoncorSx Hace algún tiempo escribí un post sobre JFrame transparente, y aca sobre otra forma de realizarlo, ahora vuelvo a escribir uno nuevo pero ahora es mediante la...

Readmore

Ejemplo de panel Avatar de EdisoncorSx En este primer ejemplo vamos a ver como es la utilización del componente PanelAvatarChooser de la librería EdisoncorSx, para ello vamos a utilizar netbeans,...

Readmore

Agregar Libreria EdisoncorSx a paleta de Netbeans Una forma sencilla de poder utilizar la librería EdisoncorSx a Netbeans es integrándola como librería nativa, lo cual permitirá una fácil...

Readmore

EdisoncorSx Hola amigos, hace algún tiempo que no pósteo nada en absoluto y al blog lo he tenido un poco olvidado, pero mas vale tarde que nunca, en está ocasión...

Readmore

Señal Paternal WTF Solo en mi lindo país Ecuador, se dan este tipo de señales [caption id="attachment_599" align="aligncenter" width="600" caption="Señal...

Readmore

Edisoncor Weblog Rss

JLabel con Imagen Semitransparente

Posted on : 04-06-2009 | By : edisoncor | In : Netbeans, Swing

1

A veces se desea utilizar un Jlabel que tenga en su fondo una imagen, pero que la imagen no interfiera con la claridad del texto aquí la solución

import java.awt.AlphaComposite;
import java.awt.Composite;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
 
/**
 *
 * @author EdisonCor
 */
public class LabelConImagen extends JLabel{
 
    private float tran= 0.5f;
    private Image image=null;
    private Icon icono;
 
    public float getTran() {
        return tran;
    }
 
    public void setTran(float tran) {
        this.tran = tran;
    }
 
    public Image getImage() {
        return image;
    }
 
    public void setImage(Image image) {
        this.image = image;
        repaint();
    }
 
    public Icon getIcono() {
        return icono;
    }
 
    public void setIcono(Icon icon){
        this.icono=icon;
        setImage(((ImageIcon)icon).getImage());
    }
 
    @Override
    protected void paintComponent(Graphics g) {
          Graphics2D g2 = (Graphics2D) g;
 
        g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        Composite oldComposite = g2.getComposite();
        AlphaComposite newComposite =
	    AlphaComposite.getInstance(
                AlphaComposite.SRC_OVER,getTran());
        g2.setComposite(newComposite);
        if(getImage()!=null)
            g2.drawImage(getImage(), 0, 0, getWidth(), getHeight(), null);
        g2.setComposite(oldComposite);
        super.paintComponent(g);
    }
 
}

ahora una vez que creamos la clase LabelConImagen ahora la vamos a utilizar lo primero es que vamos a agregar en un Jframe, lo podemos hacer en netbeans con solo arrastrar la clase desde el navegador de proyectos hasta un JPanel, Jdialog, Jframe, aquí vamos a observar la propiedad icono de donde nosotros podemos seleccionar la imagen

Jlabel transparente

Jlabel transparente

una vez que le selecionemos la imagen vamos a personalizar el label con fuente y los características que desees

Jlabel transparente

Jlabel transparente

la clase también posee una propiedad tran donde se puede seleccionar el nivel de transparencia del JLabel

JLabel Transparente

JLabel Transparente

Aqui les dejo otro código para la utilización de esta clase

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
 
/**
*
* @author EdisonCor
*/
public class Mainframe extends JFrame{
 
private LabelConImagen  labelConImagen1;
 
  public Mainframe() {
      labelConImagen1 = new LabelConImagen();
 
      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 
      labelConImagen1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
      labelConImagen1.setText("Autos");
      labelConImagen1.setFont(new java.awt.Font("Tahoma", 1, 36));
      labelConImagen1.setIcono(new javax.swing.ImageIcon("D:\Edisoncor\Imágenes\Autos\11-WLP05.JPG")); // NOI18N
      labelConImagen1.setTran(0.7F);
      add(labelConImagen1,BorderLayout.NORTH);
      add(new JTextField(),BorderLayout.CENTER);
      pack();
  }
 
  public static void main(String args[]) {
      Mainframe main = new Mainframe();
      main.setVisible(true);
  }
 
}

Comments (1)

Hola probe el codigo y tengo varios labelConImagen en un panel, pero cuando trato de pintar un nuevo labelConImagen los demas labelConImagen se repintan y pierden la transparencia. Porque?

Write a comment

Advertise Here