2013-09-13 6 views
0

У меня есть объект JFrame, который 1280 на 768 (я может изменить его до 1024 на 768 в будущем) ..Полный экран масштабирования

творю окно на весь экран, вызвав эту строку кода :

GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(window); 

(в то время как «окно» мой JFrame объект)

я мог видеть, что экран, кажется, полноэкранный режим, который работает очень хорошо для меня, но если я нарисую строку просто например:

g.drawString("Test!!!",100,100); 

я все еще мог видеть, что окно не масштабируется к разрешению JFrame .. (потому что строка обращается на 100х100 точки моего экрана, который 1920х1080)

Я также попытался использовать новый режим отображения:

DisplayMode display = new DisplayMode(1280, 768, 16, DisplayMode.REFRESH_RATE_UNKNOWN); 
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setDisplayMode(display); 

Но я получаю UnsupportedOperationException:

Исключение в потоке "Thread-2" java.lang.UnsupportedOperationException: Невозможно изменить режим отображения

Что это? мой монитор не поддерживает изменение режима отображения? или это просто неправильный способ сделать это? ..

+0

Вы можете проверить значение [GraphicsDevice.isDisplayChangeSupported] (http://docs.oracle.com/javase/7/docs/api/java/awt/GraphicsDevice.html#isDisplayChangeSupported%28% 29). Среди причин это может вернуть false: если [isFullScreenSupported] (http://docs.oracle.com/javase/7/docs/api/java/awt/GraphicsDevice.html#isFullScreenSupported%28%29) возвращает false, ваш полный -screen window будет симулированным полноэкранным окном, и в этом случае изменение режима отображения запрещено. – VGR

+0

Он возвращает false на моем экране, есть ли альтернатива, которая может работать с JFrame? –

ответ

0

Мое предложение: не используйте метод Chan. Гораздо проще отладить ваш код, если вы его не используете.

В официальном номере docs of Oracle вы найдете верный путь. Ключевая часть решения вашей проблемы заключается в том, что перед установкой режима отображения вам необходимо установить полноэкранный режим окна. Это способ разблокировать режим отображения изменений и предоставить эксклюзивные права на вашу программу. Просто настройте режим setFullScreenWindow() перед настройкой режима отображения.

Frame frame; 
DisplayMode newDisplayMode; 
GraphicsDevice gd; 
// create a Frame, select desired DisplayMode from the list of modes 
// returned by gd.getDisplayModes() ... 

if (gd.isFullScreenSupported()) { 
    gd.setFullScreenWindow(frame); 
} else { 
    // proceed in non-full-screen mode 
    frame.setSize(...); 
    frame.setLocation(...); 
    frame.setVisible(true); 
} 

if (gd.isDisplayChangeSupported()) { // Sometime it does return false, however the Display Change is still possible. So, this checking is not a must. 
    gd.setFullScreenWindows(frame); // Important!! Call this before setDisplayMode, otherwise you'll got UnsupportedOperationExaption. 
    gd.setDisplayMode(newDisplayMode); 
} 
Смежные вопросы