I am a beginner int the JAVA language and is trying to learn how to create full screen applications.
I am trying to create a simple application where when run, displays a full screen with blue back ground and a simple line of text in the center of the screen( it starts at position 400×300). The resolution of the application is set to 800×600.
I am running the code on a MacbookAir, running OSX Lion, with a screen resolution of 1440×900. The problem is, despite getting a blue background as I had expected, the text only appears on around upper left of the screen. The position of the text would continue to move down and right as I increase it’s position until it reaches beyond 1440×900 when it disappears. I am guessing that the screen resolution is still set at 1440×900 as oppose to 800×600.
Here are my main class:
import java.awt.*;
import javax.swing.JFrame;
public class bucky extends JFrame {
public static void main(String[] args){
DisplayMode dm = new DisplayMode(800, 600, 16, DisplayMode.REFRESH_RATE_UNKNOWN);
bucky b = new bucky();
b.run(dm);
}
public void run(DisplayMode dm){
setBackground(Color.BLUE); // Setting background color
setForeground(Color.WHITE);
setFont(new Font("Arial", Font.PLAIN, 24));
//The Screen variable is going to be a screen object
Screen s = new Screen();
try{
s.setFullScreen(dm, this); //this refers to whatever object we are working on, ie 's'
try{
//Once it is set to full screen, and wait for 5 second
Thread.sleep(5000);
}catch(Exception ex){};
}
finally{
s.restoreScreen();
}
}
public void paint(Graphics g){
g.drawString("Test", 400, 300);
}
}
And here is the the constructor for the Screen class and method from Screen class which sets the application to full screen
private GraphicsDevice vc; // Gives an interface to graphics card/video card.
public Screen(){
//env is environment variable, containing all graphics manipulation objects
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
//When we get environment and getDegaultScreen Device, we get access to the entire monitor, not just a window
vc = env.getDefaultScreenDevice();
}
public void setFullScreen(DisplayMode dm, JFrame window){
window.setUndecorated(true);
window.setResizable(false);
vc.setFullScreenWindow(window);
if(dm != null && vc.isDisplayChangeSupported()) {
try{
vc.setDisplayMode(dm);
}catch(Exception ex){}
}
}
If anyone could point me out to why the resolution is not being set properly, it would be much appreciated.
From the docs for setDisplayMode
So you’ll need to make sure that you set the display mode to one of those.