当前位置: 首页 > 面试题库 >

在JAVA中,使用setDisplayMode为全屏应用程序更改分辨率

路扬
2023-03-14
问题内容

我是JAVA语言的初学者,正在尝试学习如何创建全屏应用程序。

我正在尝试创建一个简单的应用程序,该应用程序在运行时将显示一个带有蓝色背景的全屏,并在屏幕中央显示一条简单的文本行(起始位置为400x300)。应用程序的分辨率设置为800x600。

我在运行OSX
Lion的MacbookAir上运行代码,屏幕分辨率为1440x900。问题是,尽管像我预期的那样获得了蓝色背景,但文本仅出现在屏幕的左上方。当我增加其位置时,文本的位置将继续向右下移动,直到消失时达到1440x900以上。我猜想屏幕分辨率仍然设置为1440x900,而不是800x600。

这是我的主要课程:

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

    }

如果有人可以指出为什么分辨率设置不正确,将不胜感激。


问题答案:

从文档中获取setDisplayMode

显示模式必须是getDisplayModes()返回的显示模式之一,但有一个例外:通过DisplayMode.REFRESH_RATE_UNKNOWN刷新率传递显示模式将导致从宽度,高度和宽度匹配的可用显示模式列表中选择一种显示模式。位深度。

因此,您需要确保将显示模式设置为其中之一。



 类似资料:
  • 我使用的是使用Java机器人类截屏的标准方法,即: 这在大多数情况下都可以正常工作,但它只是在全屏应用程序中拍摄一个空白屏幕的照片(我使用的是Windows 7,所以大多数应用程序都使用Direct X全屏)。这是机器人类的已知问题还是我做错了什么?

  • 我正试图用java设计一个程序,定期(每100毫秒左右)拍摄我的屏幕截图,并计算整个屏幕的平均像素rgb值。我需要这个来处理视频游戏和iTunes/Quicktime视频。然而,我曾尝试使用JNA和robot来捕获屏幕,它只在我没有捕获全屏或iTunes视频的视频游戏时起作用。例如,我通过保存一个图像来测试代码,以检查并查看发生了什么。当我玩电子游戏时,我只看到一个空白窗口的截图。我认为这是因为游

  • 问题内容: 我需要找到访问我的网站的用户屏幕的屏幕分辨率? 问题答案: 您无法使用纯PHP做到这一点。您必须使用JavaScript来完成。有几篇有关如何执行此操作的文章。 本质上,您可以设置cookie,甚至可以执行一些Ajax来将信息发送到PHP脚本。如果使用jQuery,则可以执行以下操作: jQuery: PHP(some_script.php) 所有这些实际上都是最基本的,但是它应该可以

  • 问题内容: 如何获得以像素为单位的屏幕分辨率(宽x高)? 我正在使用JFrame和Java swing方法。 问题答案: 你可以使用该方法获取屏幕尺寸。 在多显示器配置中,你应该使用以下命令: 如果要在DPI中获得屏幕分辨率,则必须使用上的getScreenResolution()方法Toolkit。

  • 新的iPhone5显示屏有了新的宽高比和新的分辨率(640 x 1136像素)。 开发新的应用程序或将现有的应用程序转换到新的屏幕大小需要什么? 为了使旧显示器和新宽屏的应用程序“通用”,我们应该记住什么?

  • 问题内容: 我需要根据屏幕分辨率更改templateURL,例如,如果我的屏幕宽度小于768px,则必须加载“ templates / browse-content- mobile.html”;如果屏幕宽度大于768px,则必须加载“ templates / browse-content” .html”。 当前使用的代码。 在这里我正在尝试此代码 此代码块正常工作,它根据那里的分辨率加载移动和桌面