在接下来的四十分钟内,我将在我的大学举办一场音乐会,我将在几个不同的屏幕上投影我写的全屏应用程序。我今晚只能使用投影系统,当插入屏幕时,我的屏幕分辨率发生了巨大变化,但是当我执行我的程序时,它就像使用我的旧屏幕分辨率一样工作。我已经将整个视觉显示编码为精确的像素值,但现在有一半没有显示,因为它被推离了屏幕的一侧。我尝试在系统偏好设置中手动更改我的显示,但它没有效果。我尝试创建不同的显示模式以适应分辨率,但我不断收到消息 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 的直接扩展。
如果我没有得到这个工作,我会通过我学位的这个模块。请stackoverflow现在不要让我失望!谢谢!
编辑:固定异常但是程序似乎根本没有改变分辨率,尽管设置了 800、600、60、60。