2010-12-16 11 views
5

Muszę sposób na powstrzymanie osób korzystających z innych programów, podczas gdy mój program Java jest uruchomiony. Tj Zatrzymywanie osób przełączać karty i wciskając Alt F4 ...Java Program Full Screen (Swing) -tab/ALT F4

Thanks :)

+0

Nie sądzę, że można to zrobić bez uciekania się do JNI zależnego od platformy. Dobre pytanie. –

+3

Dlaczego, na Boga, chcesz to zrobić? Cały problem z wielozadaniowym systemem operacyjnym polega na tym, że ludzie mogą to zrobić. – DJClayworth

+0

Spójrz: http://stackoverflow.com/questions/6127709/remove-the-possibility-of-using-alt-f4-and-alt-tab-in-java-gui?lq=1 – seewip

Odpowiedz

9

aby program pełnego wykorzystania ekranu;

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

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

I aby okno zawsze było na wierzchu (Aby zatrzymać ludzi przy użyciu innych uruchomionych programów);

window.setAlwaysOnTop(true); 
+0

Dzięki Ste T :) –

+0

Czy zmaksymalizowane okno uniemożliwia dostęp do paska zadań Window? Jeśli twoje okno jest zawsze ustawione na górze, czy zasłoni wszystkie modalne okna dialogowe, które możesz później ustawić? – Curtis

+3

Jeśli okno traci ostrość, pasek zadań staje się widoczny, ale można użyć robota do kliknięcia, gdy okno traci ostrość jako poprawkę: D –

7

Nie zamierzamy być w stanie to zrobić na poziomie Java - musisz umieścić system operacyjny w trybie „kiosk” pewnego rodzaju.

Niechciana komentarzem - Czy trzeba to dlatego, że (lub klient) Nienawidzę swoich użytkowników, a chcesz, żeby cię przeklinać na zawsze? Czy planujesz dodać do swojego programu funkcje takie jak "zamknij komputer"?

+9

+1 dla niezamawianego komentarza. Szybko odinstalowałbym taki program. –

+6

Może to program dla jakiegoś publicznego terminalu czy coś takiego. Trudno mi sobie wyobrazić, dlaczego taki program byłby potrzebny na normalnym komputerze stacjonarnym lub laptopie. –

6

Jeśli szukasz pełnej obsłudze ekranu, jest to kod używam. Powinno wystarczyć, abyś mógł iść. Potrzebujesz tylko globalnej zmiennej boolowskiej, aby powiedzieć, czy aplikacja jest na pełnym ekranie, czy nie. Możesz nim manipulować, aby wyświetlać, co chcesz.

 
/** 
    * 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 :) Dzięki alot mate ... –

+0

Jest to bardzo rozbudowany sposób tworzenia aplikacji na pełnym ekranie. Większość innych przewodników to "device.setFullScreenWindow (this);" ale może to zostawić niechciane krawędzie. Chciałbym osobiście usunąć "setLocationRelativeTo (null);" jednak linia wydaje się zapamiętywać swoją starą lokalizację i do niej wróci. – Finnboy11