Изменение разрешения экрана Java - PullRequest
6 голосов
/ 13 февраля 2012

Я слежу за серией уроков по разработке игр на Java, которую написал тогдашний Бостон на Youtube.Я нахожусь в точке, где я могу сделать полноэкранное окно, но разрешение отказывается изменить размер до 800x600.Я протестировал vc, объект GraphicsEnvironment.getDefaultScreenDevice и dm, DisplayMode, и они, похоже, не являются проблемой.Я бегу Снежный Барс.Есть идеи?

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 Ответ

1 голос
/ 23 апреля 2012

Добавьте этот код в свой класс 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
};

Я предполагаю, что ошибка в вашем публичном методе void setFullScreen (DisplayMode dm). В этом случае полный синтаксис этого метода:

/*****************************************************************************
 * @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 ...

...