0

私はJAVA言語の初心者であり、フルスクリーンアプリケーションの作成方法を学ぼうとしています。

実行すると、画面の中央に青い背景と単純なテキスト行(400x300の位置から開始)が表示されたフルスクリーンを表示する単純なアプリケーションを作成しようとしています。アプリケーションの解像度は800x600に設定されています。

私はMacbookAirでコードを実行しており、OSXLionを実行しています。画面解像度は1440x900です。問題は、予想どおり青い背景が表示されているにもかかわらず、テキストが画面の左上付近にしか表示されないことです。テキストの位置は、1440x900を超えて消えるまで位置を上げると、上下に移動し続けます。画面の解像度は800x600ではなく1440x900に設定されていると思います。

これが私のメインクラスです:

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

}

そして、これがScreenクラスのコンストラクターであり、アプリケーションをフルスクリーンに設定する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){}
        }

    }

解像度が正しく設定されていない理由を誰かに指摘していただければ幸いです。

4

2 に答える 2

2

setDisplayModeのドキュメントから

表示モードは、getDisplayModes()によって返される表示モードの1つである必要があります。ただし、1つの例外があります。ただし、DisplayMode.REFRESH_RATE_UNKNOWNリフレッシュレートで表示モードを渡すと、使用可能な表示モードのリストから、幅、高さ、および一致する表示モードが選択されます。ビット深度。

したがって、表示モードをこれらのいずれかに設定していることを確認する必要があります。

于 2012-05-30T16:41:09.633 に答える
0

答えはGraphicsDevice.setDisplayMode(...)のjavadocにあると思います。最初に確認if (gd.isFullScreenSupported())してから呼び出すsetFullScreenWindow(frame)か、frame.setSize(...)メソッドを使用してフルスクリーンモードをシミュレートする必要があります。

于 2013-07-23T09:20:50.590 に答える