2012-02-13 104 views
6

我正在Youtube上关注新游戏在Java中游戏开发的一系列教程。我处于可以制作全屏窗口的位置,但分辨率拒绝将其调整为800x600。我已经测试过vc,一个GraphicsEnvironment.getDefaultScreenDevice对象,以及dm,一个DisplayMode,并且它们似乎不是问题。我正在运行雪豹。有任何想法吗?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

当这段代码执行时你会得到一个异常吗?如果是这样,请尝试使用'ex.getMessage()'或'ex.printStackTrace()'打印错误消息' – 2012-02-13 04:26:07

+0

类似的代码适用于Leopard。这可能有助于编辑您的问题,以包含显示您描述的问题的[sscce](http://sscce.org/)。 – trashgod 2012-02-13 04:56:02

+0

@Hunter McMillen:不,我没有收到任何错误消息。抱歉。 – 2012-02-13 05:11:49

回答

1

将此代码添加到您的Core.java(或GameClient.java)类中。问题可能是您没有将所需的DM []参数传递给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 
}; 

我假设的错误是你的公共无效setFullScreen(DISPLAYMODE DM)方法。在这种情况下,该方法的完整语法是:

​​

注意到这是张贴后有轻度坏死员额。 Aaahh ...