Foro de Ayuda IntercambiosvirtualeS

Foro de Ayuda IntercambiosvirtualeS (https://www.intercambiosos.org/index.php)
-   Programación (https://www.intercambiosos.org/forumdisplay.php?f=45)
-   -   [JAVA] Hacer Ventanas Transparentes (https://www.intercambiosos.org/showthread.php?t=11828)

RagdE 23-oct-2010 00:31

[JAVA] Hacer Ventanas Transparentes
 
Hola compañeros de Intercambios!!! En ésta ocasión voy a mostrar cómo hacer una Ventana Transparente en JAVA…


El efecto de translucidez simple se utiliza para hacer una ventana transparente de manera uniforme se aplica a una ventana, en donde todos los píxeles de la ventana se le asigna un valor de alfa que determina el nivel de opacidad disponible. Cuanto menor sea el valor más transparente se hace la ventana, con el nivel de opacidad mínima se hace la ventana totalmente transparente (imposible de ver) y colocando la opacidad en el nivel máximo la ventana ya no sería transparente.




Para lograr ese efecto vamos a utilizar un archivo Jar el cual se encuentra dentro del proyecto en la carpeta lib.

Para importar la clase transparentWindows hacemos:

import transparentWindows.AWTUtilitiesWrapper;

Esa clase proporciona Un método llamado setWindowOpacity(Ventana, opacidad);

Donde Ventana -> representa un JFrame o un JDialog

Opacidad -> representa un valor Flotante que va desde 0.0 hasta 1.0 donde 0.0 nivel de opacidad mínimo y 1.0 nivel de opacidad máximo (No Transparente).

¡Para los que no sepan añadir un Jar al proyecto!

En Eclipse:

Nos ubicamos en nuestro proyecto clic derecho -> propiedades, luego buscamos donde dice Java Build Path, entramos en la pestaña Librerías y luego add External Jars…. Buscamos nuestro archivo Jar y listo!!!

En NetBeans:

Ubicamos la carpeta Librerías en nuestro proyecto clic derecho add Jar/Folder, lo buscamos y listo

Código PHP:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import transparentWindows.AWTUtilitiesWrapper;


public class 
Ventana extends JFrame implements ChangeListener{

    private final 
int MIN 0;
    private final 
int MAX 10;
    private final 
int INIT 8
    private 
float trans .8f;
    private 
AWTUtilitiesWrapper utilities null;
    private 
JLabel miLabel nulllabelOpacidad null;
    private 
JSlider slider null;
    private 
GridBagConstraints gbc null;
    private 
JPanel panel null;
    
    public 
Ventana(){
        
gbc = new GridBagConstraints();
        
this.setTitle("Ventana Transparente");
        
        
// creamos un objeto de tipo AWTUtilitiesWrapper
        
utilities = new AWTUtilitiesWrapper();
        
// le asignamos la opacidad por defecto 0.8f
        
utilities.setWindowOpacity(thistrans);    
        
        
panel = new JPanel(new GridBagLayout());
        
        
slider = new JSlider(JSlider.HORIZONTALMINMAXINIT);
        
        
slider.addChangeListener(this);
        
        
slider.setMajorTickSpacing(10);
        
slider.setMinorTickSpacing(1);
        
        
labelOpacidad = new JLabel("Nivel de Opacidad");
        
labelOpacidad.setFont(new Font("Arial"314));
        
        
gbc.gridx 0;
        
gbc.gridy 0;
        
gbc.insets = new Insets(10,10,10,10);
        
panel.add(labelOpacidadgbc);
        
        
miLabel = new JLabel("[By RagdE]");
        
miLabel.setForeground(Color.red);
        
miLabel.setFont(new Font("Arial"120));

        
gbc.gridx 0;
        
gbc.gridy 1;
        
panel.add(slidergbc);

        
gbc.gridx 0;
        
gbc.gridy 2;
        
panel.add(miLabelgbc);
        
this.add(panelBorderLayout.NORTH);
        
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        
this.setSize(300180);
        
this.setResizable(false);
        
this.setVisible(true);
    }
    
    
// Manejador del JSlider

    
public void stateChanged(ChangeEvent e) {
        
JSlider source = (JSlider)e.getSource();
        if (!
source.getValueIsAdjusting()) { // preguntamos si se ha movido el nivel
            
int fps = (int)source.getValue(); // se obtiene dicho nivel en entero
            // pero como el nivel de transparencia tiene que ser fotante lo convertimos fps / 10.0
            
trans = (float) ((new Float(fps)) / 10.);
            if(
trans 0.4// si es menor que 0.4 asiganar a trans = 0.4 para que no desaparesca por completo
                
trans 0.4f;
            
utilities.setWindowOpacity(thistrans); // asignamos el nivel de opacidad
        
}
    }

    
    public static 
void main(String[] args) {
        
        new 
Ventana();
    }




wpiaw 23-oct-2010 01:53

Gracias muy bueno!

http://i874.photobucket.com/albums/a...w/Gxcomp-1.png


La franja horaria es GMT -4. Ahora son las 15:26.

Desarrollado por: vBulletin® Versión 3.8.1
Derechos de Autor ©2000 - 2025, Jelsoft Enterprises Ltd.

Ad Management by RedTyger