java - 如何缩放程序以正确的屏幕分辨率?

标签 java

接下来的四十分钟内,我将在我的大学举办一场音乐会,其中我将在几个不同的屏幕上投影我编写的全屏应用程序。今晚我只能控制投影系统,并且当插入时,我的屏幕分辨率发生了巨大的变化,但是当我执行我的程序时,它的工作原理就好像它正在使用我的旧屏幕分辨率一样。我已将整个视觉显示编码为精确的像素值,但现在其中一半未显示,因为它被推离屏幕一侧。我尝试在系统偏好设置中手动更改显示,但没有效果。我尝试创建不同的显示模式来适应分辨率,但我不断收到消息 UnsupportedOperationException:无法更改显示模式。我是否可以将程序缩放到正确的大小或更改为正确的显示模式?

下面是我用来初始化全屏的代码:

            frame = new display();
            canvas = new Canvas();
            canvas.addKeyListener(this);
            frame.setUndecorated(true);
            frame.getContentPane().add(canvas);
            strategy = canvas.getBufferStrategy();
            environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
            device = environment.getDefaultScreenDevice();
            oldDisplay = device.getDisplayMode();
try {
            device.setFullScreenWindow(frame);
            newDisplay = new DisplayMode(1440, 900, 60, 60);
            device.setDisplayMode(newDisplay);
catch (Exception ex) { }
            canvas.requestFocus();
            canvas.setFocusTraversalKeysEnabled(false);
            frame.setVisible(true);
            canvas.createBufferStrategy(2);
            strategy = canvas.getBufferStrategy();

Display 只是 JFrame 的直接扩展。

如果我不能做到这一点,我的学位类(class)就会失败。请 stackoverflow 现在不要让我失望!谢谢!

编辑:已修复异常,但是尽管将分辨率设置为 800、600、60、60,程序似乎根本没有更改分辨率。

最佳答案

我的解决方案不是OP正在考虑的。但我相信它可以解决您的问题。

获取 VirtualBox(或任何其他支持缩放模式的 VM)。花 20 分钟在上面安装一个操作系统,并在其中运行您的程序。许多虚拟机支持缩放模式,即 guest 操作系统会认为它正在运行分辨率 X1*Y1,但在您的屏幕上,它实际上显示为 X2*Y2,由虚拟机缩放。因此,您可以让您的程序在任何分辨率下都能正常显示。

关于java - 如何缩放程序以正确的屏幕分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13093029/

相关文章:

java - 输入文件中的二叉树问题

java - 在 Spring Boot 应用程序中将日志写入 Unix 框

java - 如何使用 Hibernate Lucene Search 进行不区分大小写的排序?

java - 创建线程不起作用

java - 检查if条件JSP并运行js函数

java - 如何修复代码以删除 -Xlint :unchecked warning while compiling

如果 url 包含特殊字符,Java ImageIO.read() 会崩溃

java - 如何检查字符串列表是否包含特定值?

java - java ftp代码中的问题

java - 将数据从 eclipse 存储到 neo4j