2010-12-16 3 views
5

Ich brauche eine Möglichkeit, Leute zu stoppen, die andere Programme verwenden, während mein Java-Programm läuft. I.E Stoppen Personen wechseln Registerkarten und drücken alt f4 ...Java-Vollbild-Programm (Swing) -Tab/ALT F4

Thanks :)

+0

Ich glaube nicht, dass Sie dies tun können, ohne auf plattformabhängige JNI zurückgreifen zu müssen. Eine gute Frage. –

+3

Warum in aller Welt möchten Sie das tun? Der ganze Sinn eines Multitasking-Betriebssystems ist, dass Menschen das tun können. – DJClayworth

+0

Werfen Sie einen Blick auf: http://stackoverflow.com/questions/6127709/remove-the-possibility-of-using-alt-f4-and-alt-tab-in-java-gui?lq=1 – seewip

Antwort

9

Um das Programm zu Vollbild-Anwendung zu machen;

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

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

Und um das Fenster immer auf der Oberseite zu verwenden (um Leute mit anderen laufenden Programmen zu stoppen);

window.setAlwaysOnTop(true); 
+0

Danke Ste T :) –

+0

Verhindert ein maximiertes Fenster den Zugriff auf die Windows-Taskleiste? Wenn Ihr Fenster so eingestellt ist, dass es immer oben ist, wird es irgendwelche modalen Dialoge verdecken, die Sie später aufstellen könnten? – Curtis

+3

Wenn das Fenster den Fokus verliert, wird die Taskleiste zwar sichtbar, aber Sie können einen Roboter verwenden, um zu klicken, wenn das Fenster den Fokus verliert: D –

7

Du wirst in der Lage sein nicht dieses Niveau auf Java zu tun - Sie werden das Betriebssystem in einen „Kiosk-Modus“ irgendeine Art setzen müssen.

Initiativkommentar - Benötigen Sie dies, weil Sie (oder Ihr Kunde) Ihre Benutzer hassen und wollen, dass sie Sie für immer verfluchen? Planen Sie, Ihrem Programm Funktionen wie "Computer herunterfahren" hinzuzufügen?

+9

+1 für den unerwünschten Kommentar. Ich würde ein solches Programm schnell deinstallieren. –

+6

Vielleicht ist es ein Programm für irgendeine Art von öffentlichem Terminal oder so etwas. Ich kann mir kaum vorstellen, warum ein solches Programm auf einem normalen Desktop-PC oder einem Laptop nötig wäre. –

6

Wenn Sie Vollbildunterstützung suchen, ist dies der Code, den ich verwende. Sollte genug sein, um dich in Gang zu bringen. Sie brauchen nur eine globale boolesche Variable, um zu sagen, ob die Anwendung Vollbild ist oder nicht. Sie können damit basteln, um es Ihnen zu zeigen.

 
/** 
    * 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

Nice :) Vielen Dank mate ... –

+0

Dies ist eine sehr umfangreiche Möglichkeit, die Anwendung Vollbild zu machen. Die meisten anderen Anleitungen enthalten nur 'device.setFullScreenWindow (this);' Dies kann jedoch unerwünschte Kanten hinterlassen. Ich würde persönlich 'setLocationRelativeTo (null);' Linie, obwohl das Fenster sich an seinen alten Standort zu erinnern scheint und zu ihm zurückkehren wird. – Finnboy11