FullScreenMode в Java

Я следил за книгой Дэвида Брэккина "Разработка игр на Java", а в главе 2 он учит, как использовать полноэкранный режим. Проблема, с которой я сталкиваюсь, заключается в том, что когда я иду запускать его исходный код, все, что я получаю, это белый экран. Я потратил несколько часов на это, и я считаю, что это имеет какое-то отношение к Windows 7.

Спасибо за ваше время!

import java.awt.*;

import javax.swing.JFrame;

/**
The SimpleScreenManager class manages initializing and
displaying full screen graphics modes.
*/
public class SimpleScreenManager {

private GraphicsDevice device;

/**
 Creates a new SimpleScreenManager object.
*/
public SimpleScreenManager() {
 GraphicsEnvironment environment =
 GraphicsEnvironment.getLocalGraphicsEnvironment();
 device = environment.getDefaultScreenDevice();

}


/**
 Enters full screen mode and changes the display mode.
*/
public void setFullScreen(DisplayMode displayMode,
 JFrame window)
{
 window.setUndecorated(true);
 window.setResizable(false);

 device.setFullScreenWindow(window);

 if (displayMode != null &&
 device.isDisplayChangeSupported())
 {
 try {
 device.setDisplayMode(displayMode);
 }
 catch (IllegalArgumentException ex) {
 // ignore - illegal mode for this device
 }
 }
}


/**
 Returns the window currently used in full screen mode.
*/
public Window getFullScreenWindow() {
 return device.getFullScreenWindow();
}


/**
 Restores the screen display mode.
*/
public void restoreScreen() {
 Window window = device.getFullScreenWindow();
 if (window != null) {
 window.dispose();
 }
 device.setFullScreenWindow(null);
}

public static void main(String args[])
{
 SimpleScreenManager t = new SimpleScreenManager();
 try {

 t.setFullScreen(new DisplayMode(1920, 1080, 64, 0), new JFrame());
 Thread.sleep(2000);
 }
 catch (InterruptedException ex) { }
 finally {
 t.restoreScreen();
 }
}

}

1 ответ

Переключить! переключение...

private void toggleDecoration(boolean decorated) {
 dispose();
 if (decorated) {
 //save last bounds and its extended state
 lastState = getExtendedState();
 lastBounds = getBounds();
 try{
 setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);
 }
 catch(Exception ev){
 setBounds(getGraphicsConfiguration().getDevice().getDefaultConfiguration().getBounds());
 ev.printStackTrace();
 }
 }
 else {
 //restore last bounds and its extended state
 setBounds(lastBounds);
 setExtendedState(lastState);
 }
 setUndecorated(decorated);
 setVisible(true);
}

licensed under cc by-sa 3.0 with attribution.