Re:Win32GraphicsDevice.getCurrentDisplayMode

To Java Games Users

I have now started reading David Brackeens book on Developing Games in Java. Excellent Book!! :slight_smile:

I have tried the second chapter example and I am getting this runtime error.

K:\DGJ\allsrc\ch02src>java FullScreenTest
Java2D Direct3D usage disabled by J2D_D3D env
Exception in thread “main” java.lang.InternalError: Could not get display mode
at sun.awt.Win32GraphicsDevice.getCurrentDisplayMode(Native Method)
at sun.awt.Win32GraphicsDevice.getDisplayMode(Unknown Source)
at java.awt.GraphicsDevice.setFullScreenWindow(Unknown Source)
at sun.awt.Win32GraphicsDevice.setFullScreenWindow(Unknown Source)
at SimpleScreenManager.setFullScreen(SimpleScreenManager.java:31)
at FullScreenTest.run(FullScreenTest.java:36)
at FullScreenTest.main(FullScreenTest.java:23)

Is this a problem with my video card, do you need video acceleration to do what the code does below.I have the most up to date drivers, is there any other software I should be installing

If someone can help, I have tried google.com and the suggestions, small as they are are of no help.

David Thomson

Code is below (Copyright © David Brackeen)

import java.awt.*;
import javax.swing.JFrame;

public class FullScreenTest extends JFrame {

public static void main(String[] args) {

    DisplayMode displayMode;
        
    if (args.length == 3) {
        displayMode = new DisplayMode(
            Integer.parseInt(args[0]),
            Integer.parseInt(args[1]),
            Integer.parseInt(args[2]),
            DisplayMode.REFRESH_RATE_UNKNOWN);
    }
    else {
        displayMode = new DisplayMode(800, 600, 16,
            DisplayMode.REFRESH_RATE_UNKNOWN);
    }

    FullScreenTest test = new FullScreenTest();
    test.run(displayMode);
}
                          
private static final long DEMO_TIME = 5000;


public void run(DisplayMode displayMode) {
    setBackground(Color.blue);
    setForeground(Color.white);
    setFont(new Font("Dialog", 0, 24));

    SimpleScreenManager screen = new SimpleScreenManager();
    try {
        screen.setFullScreen(displayMode, this);
        try {
            Thread.sleep(DEMO_TIME);
        }
        catch (InterruptedException ex) { }
    }
    finally {
        screen.restoreScreen();
    }
}


public void paint(Graphics g) {
    g.drawString("Hello World!", 20, 50);
}

}

Try checking what modes are available:


GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment();
//get a list of available display modes
DisplayMode modes[] = device.getDisplayModes();

//  or
//get the current display mode
DisplayMode mode = device.getDisplayMode();

At this points, you can just set the current mode or print out the list that is returned to see what is available.

Anyway, checkout GraphicsEnvironment and GraphicsDevice in the API docs, that is where all this fullscreen stuff is.