El presente post muestra un interesante articulo de como generar ventanas transparentes para darle una forma diferente a la típica ventana o Frame cuadrado que siempre empleamos en nuestra programación.
Aquí les pongo el link que muestra como realizar este tipo de programación pero sus ejemplos no funcionan correctamente así que voy a detallar el código modificado que he creado para poder entenderlo mejor mas adelante.. oops bueno aqui esta la url:
http://www.onjava.com/pub/a/onjava/excerpt/swinghks_hack41/index.html
Crear translucent y shaped windows, evitando el código nativo, con uso inteligente del screenshot
Una de los mas comúnmente pedidos de características de swing es las ventanas transparentes. también llamadas shaped windows, con ventanas que tienen porciones transparentes, permitiendo ver el background del Escritorio y otros programas atraves de ellas. Java no proporciona ninguna forma de crear ventanas transparentes sin hacer uso de la Interface Nativa Java (JNI) (aunque son plataforma nativa debería apoyar la transparencia muy bien), pero eso no va a detenernos. Nosotros podemos hacerlo usando una de mis técnicas favoritas, el screeshot o captura de pantalla. El proceso de imitar una ventana transparente es básicamente:
- Crear un screenshot antes de mostrar la ventana.
- Usar ese screenshot como fondo(background) de la ventana.
- Ajustar la posición el screenshot con la linea superior de la pantalla real, crea la ilusión de transparencia.
JPanel
que puede capturar la pantalla y dibujarla como el background. como se muestra en el ejemplo
Ejemplo:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ComponentListener;
import java.awt.event.ComponentEvent;
public class TransparentBackground extends JComponent {
private JFrame frame;
private Image background;
public TransparentBackground(JFrame frame) {
this.frame = frame;
updateBackground( );
}
public void updateBackground( ) {
try {
Robot rbt = new Robot( );
Toolkit tk = Toolkit.getDefaultToolkit( );
Dimension dim = tk.getScreenSize( );
background = rbt.createScreenCapture(
new Rectangle(0,0,(int)dim.getWidth( ),
(int)dim.getHeight( )));
} catch (Exception ex) {
ex.printStackTrace( );
}
}
public void paintComponent(Graphics g) {
Point pos = this.getLocationOnScreen( );
Point offset = new Point(-pos.x,-pos.y);
g.drawImage(background,offset.x,offset.y,null);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Ventana Transparente");
TransparentBackground bg = new TransparentBackground(frame);
bg.setLayout(new BorderLayout( ));
JButton button = new JButton("Esto es un boton");
bg.add("North",button);
JLabel label = new JLabel("Esta es una etiqueta");
bg.add("South",label);
frame.getContentPane( ).add("Center",bg);
frame.pack( );
frame.setSize(450,400);
frame.setVisible(true);
}
}
Ejecutalo funciona de forma interesante.
Espero les sea de utilidad !!!Secciones
Tags
Lo he probado : consigue la
In reply to Lo he probado : consigue la by Angel .... (not verified)
VENTANAS TRANSPARENTES
Realmente está muy bueno el
Funciona muy bien! Ademas, yo
APENAS ESTOY INICIANDO EL
Hola Cristina Bueno lo
*CRISTINA ROMERO ROJAS El
RESPONDER A CRISTINA
Hola a todos, interesante
Esta muy bueno el
Holaaaa!!! io ya tengo buen
Me estoy iniciando en este
Saludos, está buenisimo este
Hola a todos! Me van a
que pasa si yo abro la
hola necesito mezclar videos