JLabel con Imagen Semitransparente
Posted on : 04-06-2009 | By : edisoncor | In : Netbeans, Swing
0
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
una vez que le selecionemos la imagen vamos a personalizar el label con fuente y los características que desees
la clase también posee una propiedad tran donde se puede seleccionar el nivel de transparencia del JLabel
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); } }








