2012-02-13 23 views
6

Youtube'daki oyun geliştirme ile ilgili bir dizi dersi Youtube'daki thenewboston ile takip ediyorum. Tam ekran bir pencere yapabileceğim noktadayım, ancak çözünürlük 800x600 boyutuna geri dönmeyi reddediyor. Ben vc, bir GraphicsEnvironment.getDefaultScreenDevice nesnesini ve dm, bir DisplayMode test ettik ve onlar sorun gibi görünmüyor. Snow Leopard'ı koşuyorum. Herhangi bir fikir?Java ekran çözünürlüğü

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

Bu kod yürütüldüğünde bir istisna var mı? Eğer öyleyse, hata mesajını ex.getMessage() 'veya' ex.printStackTrace() ' –

+0

ile yazdırmayı deneyin. Benzer kod Leopard üzerinde çalışır. Sorunuzu, tanımladığınız sorunu gösteren bir [sscce] (http://sscce.org/) içerecek şekilde düzenlemenize yardımcı olabilir. – trashgod

+0

@Hunter McMillen: Hayır, herhangi bir hata mesajı almıyorum. Afedersiniz. –

cevap

1

Bu kodu Core.java (veya GameClient.java) sınıfınıza ekleyin. Sorun, gerekli DM [] args'lerini ScreenManager.java sınıfınıza geçirmemeniz olabilir.

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 
}; 

hata genel boşluk setFullScreen (displayMode dm) yöntemi ile olduğunu varsayıyorum. Bu durumda, bu yöntem için tam sözdizimi şöyledir:

/***************************************************************************** 
* @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() 

bu yazdıktan sonra hafif bir nekro-post oldu fark. Aaahh ...