dic
20
2011

Formulario transparente en java | Robot

Descarga el contenido del Artículo en PDF Download PDF

La clase Robot de java nos permite simular acciones que hacen las personas tanto con el teclado como con el ratón, podemos “tomar el control” del equipo con acciones como pueden ser mover el ratón, presionar teclas, etc.

En este ejemplo vamos a utilizar la clase Robot para hacer un Jpanel transparente, con el código siguiente podremos realizar nuestro primer formulario transparente en java .

¿Cómo hacer un formulario transparente en java?

Como hemos comentado anteriormente con la clase Robot podemos presionar las teclas de nuestro teclado, en este caso vamos a presionar la tecla imprimir pantalla (capturar pantalla) utilizando el siguiente método  “createScreenCapture()” en el que le pasaremos el ancho y el alto de la captura.

El código completo para hacer el formulario transparente sería así:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import javax.swing.*;
import java.awt.*;
 
public class Transparente extends JComponent {
private Image background;
 
public Transparente(JFrame frame) {
updateBackground( );
}
 
public void updateBackground( ) {
try {
Robot robot = new Robot( );
Toolkit tk = Toolkit.getDefaultToolkit( );
Dimension dim = tk.getScreenSize( );
background = robot.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("Transparente");
 
Transparente bg = new Transparente(frame);
bg.setLayout(new BorderLayout());
frame.getContentPane( ).add("Center",bg);
 
frame.setSize(600, 600);
frame.setVisible(true);
 
}
}

 

En este caso, cuando cambias el tamaño del formulario se vuelve a ejecutar el método updateBackground(), de este modo el programa vuelve a realizar un “imprimir pantalla” que mostrará de nuevo con las nuevas medidas de ancho o alto.

Sin embargo, si solo mueves el formulario podrás ver que no realiza de nuevo el updateBackground() y dejará tu primera imagen como fondo del formulario, ahora no parecerá transparente.

En el caso de que necesites un formulario que ocupe toda la pantalla puedes utilizar el siguiente código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import javax.swing.*;
import java.awt.*;
 
public class Transparente extends JComponent {
private Image background;
 
public Transparente(JFrame frame) {
updateBackground( );
}
 
public void updateBackground( ) {
try {
Robot robot = new Robot( );
Toolkit tk = Toolkit.getDefaultToolkit( );
Dimension dim = tk.getScreenSize( );
background = robot.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("Transparente");
 
Transparente bg = new Transparente(frame);
bg.setLayout(new BorderLayout());
frame.getContentPane( ).add("Center",bg);
 
frame.setUndecorated(true);
frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
 
frame.setVisible(true);
 
}
}

 

Click on any of these buttons to help us to maintain this website.      
CJO

Artículos relacionados

Related Posts

Acerca del Autor:

1 Comment + Add Comment

  • Información Bitacoras.com…

    Valora en Bitacoras.com: Código Java Oracle – La clase Robot de java nos permite simular acciones que hacen las personas tanto con el teclado como con el ratón, podemos “tomar el control” del equipo con acciones como pueden ser mover el ratón,……

Leave a comment


cuatro + 8 =

Recientes

  • Roul: En mi caso, sobre la versión 2.4 corre perfectamente. ¿Qué versión tienes? ¿Qué error te muestra?
  • Eliez: Hola amigo una pregunta corri el codigo y no me causo problemas pero al momento de hacer el instaldor lo hace...
  • Diseño de Pagina Web: Muy buenoooo!!!!! Recicler comment
  • Albert: Gracias por contestar, la verdad es que ya lo suponía que seria ese el problema, supongo que si el otro...
  • MMane: El problema puede venir por ahí, prueba a reescribir los artículos! suerte!