2009-04-06 15 views
5

Estoy trabajando en una aplicación java swing que se utilizará en un experimento de psicología y los investigadores me han pedido que haga que el programa "oscurezca la pantalla" para que no haya estímulos externos para el usuario. Quieren que la aplicación swing sea realmente a pantalla completa y sin ningún tipo de barra de título ni botones de minimizar/maximizar/cerrar en la parte superior.¿Cómo puedo crear una aplicación Java Swing que cubra la barra de título de Windows?

El software se ejecuta en un entorno de Windows XP utilizando JavaSE 6.

¿Cómo puedo hacer esto y proporcione un fragmento de código en su caso.

Gracias!

Respuesta

11

¿Utiliza las API de Java de pantalla completa?

http://java.sun.com/docs/books/tutorial/extra/fullscreen/exclusivemode.html

http://www.artificis.hu/2006/03/16/java-awtswing-fullscreen

JFrame fr = new JFrame(); 
fr.setResizable(false); 
if (!fr.isDisplayable()) { 
    // Can only do this when the frame is not visible 
    fr.setUndecorated(true); 
} 
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
try { 
    if (gd.isFullScreenSupported()) { 
    gd.setFullScreenWindow(fr); 
    } else { 
    // Can't run fullscreen, need to bodge around it (setSize to screen size, etc) 
    } 
    fr.setVisible(true); 
    // Your business logic here 
} finally { 
    gd.setFullScreenWindow(null); 
} 
+0

¿Puede explicar (concisamente) cómo se utilizan estas API en lugar de solo publicar enlaces? Obviamente leeré los enlaces pero aún así ... – HipsterZipster

+0

El modo de pantalla completa usa un paradigma diferente de las aplicaciones normales de Swing. Está pensado para cosas como juegos o protectores de pantalla. Como dice el enlace, "la mayoría de las aplicaciones exclusivas de pantalla completa son más adecuadas para usar ventanas sin decoración". Es una opción, pero requerirá que escriba más código usted mismo. – erickson

+0

Eso es una combinación de ambos enlaces, no probados. ¿Ayudas? – JeeBee

9

Utilice la propiedad setUndecorated(true). Tenga en cuenta que esto debe hacerse antes de hacer que el marco sea visible.

JFrame frame = new JFrame(); 
Toolkit tk = Toolkit.getDefaultToolkit(); 
frame.setBounds(new Rectangle(new Point(0, 0), tk.getScreenSize())); 
frame.setUndecorated(true); 
frame.setVisible(true); 
0

Sé que este hilo es viejo pero lo encontré mientras que la búsqueda de cómo hacer lo mismo que yo. No pude encontrar ninguna solución que quisiera usar, así que se me ocurrió esto. Descubrí que la solución a continuación no solo funciona sino que es mucho más simple que las respuestas anteriores.

JFrame frame = new JFrame(); 
frame.setResizable(false); 
frame.setUndecorated(true); 
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
frame.setSize(dim); 
frame.setVisible(true); 
Cuestiones relacionadas