2010-12-16 18 views
5

Necesito una forma de evitar que otras personas utilicen otros programas mientras mi programa Java se está ejecutando. I.E Detener la gente cambia pestañas y presionar f4 alt ...Programa de pantalla completa de Java (Swing) -Tab/ALT F4

Gracias :)

+0

no creo que pueda hacerlo sin recurrir a la JNI dependiente de la plataforma. Una buena pregunta. –

+3

¿Por qué demonios querrías hacer eso? El objetivo de ejecutar un sistema operativo multitarea es que la gente PUEDA hacerlo. – DJClayworth

+0

Eche un vistazo a: http://stackoverflow.com/questions/6127709/remove-the-possibility-of-using-alt-f4-and-alt-tab-in-java-gui?lq=1 – seewip

Respuesta

9

Para hacer el programa completo uso de la pantalla;

window.setExtendedState(Frame.MAXIMIZED_BOTH); //maximise window 

window.setUndecorated(true); //remove decorations e.g. x in top right 

Y para hacer que la ventana siempre esté en primer uso (para detener a las personas que usan otros programas en ejecución);

window.setAlwaysOnTop(true); 
+0

Gracias Ste T :) –

+0

¿Una ventana maximizada impide el acceso a la barra de tareas de la ventana? Si su ventana está configurada para estar siempre en la parte superior, ¿oscurecerá los cuadros de diálogo modales que pueda colocar más adelante? – Curtis

+3

Si la ventana pierde el foco, la barra de tareas se vuelve visible pero puede usar un robot para hacer clic cuando la ventana pierde el foco como una solución: D –

7

no vas a ser capaz de hacer esto en el nivel de Java - se necesita para poner el sistema operativo en un "modo de pantalla" de algún tipo.

Comentarios no solicitados: ¿Necesita esto porque usted (o su cliente) odia a sus usuarios y desea que lo maldigan para siempre? ¿Está planeando agregar funciones como "apagar la computadora" a su programa?

+9

+1 para el comentario no solicitado. Desinstalaría rápidamente un programa así. –

+6

Tal vez es un programa para algún tipo de terminal público o algo así. No puedo imaginarme por qué un programa así sería necesario en una computadora de escritorio normal o en una computadora portátil. –

6

Si busca soporte de pantalla completa, este es el código que uso. Debería ser suficiente para que empieces. Solo necesita una variable booleana global para decir si la aplicación está en pantalla completa o no. Puede jugar con él para que muestre uno que le guste.

 
/** 
    * Method allows changing whether this window is displayed in fullscreen or 
    * windowed mode. 
    * @param fullscreen true = change to fullscreen, 
    *     false = change to windowed 
    */ 
    public void setFullscreen(boolean fullscreen) 
    { 
     //get a reference to the device. 
     GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
     DisplayMode dispMode = device.getDisplayMode(); 
     //save the old display mode before changing it. 
     dispModeOld = device.getDisplayMode(); 

     if(this.fullscreen != fullscreen) 
     { //are we actually changing modes. 
      //change modes. 
      this.fullscreen = fullscreen; 
      // toggle fullscreen mode 
      if(!fullscreen) 
      { 
       //change to windowed mode. 
       //set the display mode back to the what it was when 
       //the program was launched. 
       device.setDisplayMode(dispModeOld); 
       //hide the frame so we can change it. 
       setVisible(false); 
       //remove the frame from being displayable. 
       dispose(); 
       //put the borders back on the frame. 
       setUndecorated(false); 
       //needed to unset this window as the fullscreen window. 
       device.setFullScreenWindow(null); 
       //recenter window 
       setLocationRelativeTo(null); 
       setResizable(true); 

       //reset the display mode to what it was before 
       //we changed it. 
       setVisible(true); 

      } 
      else 
      { //change to fullscreen. 
       //hide everything 
       setVisible(false); 
       //remove the frame from being displayable. 
       dispose(); 
       //remove borders around the frame 
       setUndecorated(true); 
       //make the window fullscreen. 
       device.setFullScreenWindow(this); 
       //attempt to change the screen resolution. 
       device.setDisplayMode(dispMode); 
       setResizable(false); 
       setAlwaysOnTop(false); 
       //show the frame 
       setVisible(true); 
      } 
      //make sure that the screen is refreshed. 
      repaint(); 
     } 
    } 
 
+0

Niza :) Muchas gracias amigo ... –

+0

Esta es una manera realmente extensa de hacer que la aplicación se muestre a pantalla completa. La mayoría de las otras guías solo incluyen 'device.setFullScreenWindow (this);' pero esto puede dejar bordes no deseados. Quitaría personalmente el 'setLocationRelativeTo (null);' aunque la ventana parece recordar su ubicación anterior y volverá a ella. – Finnboy11

Cuestiones relacionadas