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 400x300). The resolution of the application is set to 800x600.
I am running the code on a MacbookAir, running OSX Lion, with a screen resolution of 1440x900. 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 1440x900 when it disappears. I am guessing that the screen resolution is still set at 1440x900 as oppose to 800x600.
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.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…