2012-02-13 22 views
6

Śledzę serię tutoriali na temat tworzenia gier w Javie przez thenewboston na Youtube. Znajduję się w punkcie, w którym mogę utworzyć okno pełnoekranowe, ale rozdzielczość nie zmienia rozmiaru na 800 x 600. Przetestowałem vc, obiekt GraphicsEnvironment.getDefaultScreenDevice i dm, DisplayMode i nie wydają się być problemem. Prowadzę Snow Leopard. Jakieś pomysły?Zmiana rozdzielczości ekranu Java

if(dm != null && vc.isDisplayChangeSupported()){ 
     try{ 
      vc.setDisplayMode(dm); 
      System.out.println("Display mode set"); 
     }catch(Exception ex){System.out.println("Despite the vc saying it is display change supported and the DM is not null, something went wrong");} 

    } 
} 
+1

Czy otrzymasz wyjątek podczas wykonywania tego kodu? Jeśli tak, spróbuj wydrukować komunikat o błędzie za pomocą funkcji "ex.getMessage()" lub "ex.printStackTrace()". –

+0

Podobny kod działa w systemie Leopard. Pomocne może być edytowanie twojego pytania w celu dołączenia [sscce] (http://sscce.org/), które pokazuje problem, który opisujesz. – trashgod

+0

@Hunter McMillen: Nie, nie dostaję żadnych komunikatów o błędach. Przepraszam. –

Odpowiedz

1

Dodaj ten kod do swojej klasy Core.java (lub GameClient.java). Problem może polegać na tym, że nie przekazujesz wymaganych argumentów DM [] do swojej klasy ScreenManager.java.

private static final DisplayMode modes[] = { //common monitor DMs 
    new DisplayMode(1366,768,32, DisplayMode.REFRESH_RATE_UNKNOWN), //1366x768px w/32-bit depth 
    new DisplayMode(1366,768,24, DisplayMode.REFRESH_RATE_UNKNOWN), // '  w/24-bit depth 
    new DisplayMode(1366,768,16, DisplayMode.REFRESH_RATE_UNKNOWN), // '  w/16-bit depth  
    new DisplayMode(800,600,32, DisplayMode.REFRESH_RATE_UNKNOWN), //800x600px w/32-bit depth 
    new DisplayMode(800,600,24, DisplayMode.REFRESH_RATE_UNKNOWN), // '  w/24-bit depth 
    new DisplayMode(800,600,16, DisplayMode.REFRESH_RATE_UNKNOWN), // '  w/16-bit depth 
    new DisplayMode(640,480,32, DisplayMode.REFRESH_RATE_UNKNOWN), //640x480px w/32-bit depth 
    new DisplayMode(640,480,24, DisplayMode.REFRESH_RATE_UNKNOWN), // '  w/24-bit depth 
    new DisplayMode(640,480,16, DisplayMode.REFRESH_RATE_UNKNOWN), // '  w/16-bit depth 
}; 

jestem przy założeniu, że błąd jest z public void setFullScreen metodą (DisplayMode dm). W takim przypadku pełna składnia tej metody jest następująca:

/***************************************************************************** 
* @description: Creates window for program to run in, using appropriate DM 
* @param DisplayMode dm 
*/ 
    public void setFullScreen(DisplayMode dm){ 
     JFrame f = new JFrame(); 
     f.setUndecorated(true); //no titlebars/scroll bars etc. 
     f.setIgnoreRepaint(true); 
     f.setResizable(false); //user cannot resize window 
     vc.setFullScreenWindow(f); 

     if(dm!=null && vc.isDisplayChangeSupported()){ //if DM is changeable 
      try { 
       vc.setDisplayMode(dm); 
      } catch (Exception e){/*Catch 'em all*/} 
     } 
     f.createBufferStrategy(2); //set # of screen buffers to 2 
    }//setFullScreen() 

Zauważyłem, że był to łagodny nekro-post po opublikowaniu. Aaahh ...

Powiązane problemy