2012-02-13 1 views
6

Я следую серии руководств по разработке игр в Java by thenewboston на Youtube. Я нахожусь в точке, где я могу создать полноэкранное окно, но разрешение отказывается изменять размер до 800x600. Я тестировал vc, объект GraphicsEnvironment.getDefaultScreenDevice и dm, DisplayMode, и они, похоже, не являются проблемой. Я бегу Snow Leopard. Есть идеи?Изменение разрешения экрана на экране 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()' –

+0

Аналогичный код работает на Leopard. Это может помочь отредактировать ваш вопрос, включив в него [sscce] (http://sscce.org/), который показывает проблему, которую вы описываете. – trashgod

+0

@Hunter McMillen: Нет, я не получаю сообщений об ошибках. Сожалею. –

ответ

1

Добавить этот код в класс Core.java (или GameClient.java). Проблема может заключаться в том, что вы не передаете необходимые DM [] args в ваш класс 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 дм). В этом случае полный синтаксис для этого метода:

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

Заметил это был мягким некро-пост после отправки. Aaahh ...