Ändern der Auflösung in JAVA mit setDisplayMode für die Vollbildanwendung

Ich bin ein Anfänger in der JAVA-Sprache und versuche zu lernen, wie man Vollbildanwendungen erstellt.

Ich versuche, eine einfache Anwendung zu erstellen, bei der beim Ausführen ein Vollbild mit blauem Hintergrund und einer einfachen Textzeile in der Mitte des Bildschirms angezeigt wird (ab Position 400 x 300). Die Auflösung der Anwendung ist auf 800x600 eingestellt.

Ich führe den Code auf einem MacbookAir mit OSX Lion und einer Bildschirmauflösung von 1440 x 900 aus. Das Problem ist, dass der Text trotz des erwarteten blauen Hintergrunds nur links oben auf dem Bildschirm angezeigt wird. Die Position des Texts würde sich weiter nach unten und rechts bewegen, wenn ich seine Position erhöhe, bis er nach dem Verschwinden 1440 x 900 erreicht. Ich vermute, dass die Bildschirmauflösung im Gegensatz zu 800x600 immer noch auf 1440x900 eingestellt ist.

Hier sind meine Hauptklassen:

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);
    }

}

Und hier ist der Konstruktor für die Screen-Klasse und die Methode aus der Screen-Klasse, mit der die Anwendung auf Vollbild gesetzt wird

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){}
        }

    }

Wenn jemand mich darauf hinweisen könnte, warum die Auflösung nicht richtig eingestellt ist, wäre er sehr dankbar.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage