我在接下来的四十分钟内在我的大学举办一场音乐会,其中我正在投影一个我在几个不同屏幕上编写的全屏应用程序。我只能在今晚低调地看到投影系统,看到当我的屏幕分辨率急剧变化时,但是当我执行我的程序时,它就像使用我的旧屏幕分辨率一样工作。我已经将整个可视化显示编码为精确的像素值,但现在一半不显示,因为它被推离屏幕的一侧。我试过在系统偏好设置中手动更改显示,但它没有任何作用。我试过创建不同的显示模式来适应分辨率,但我不断收到消息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();
显示是JFrame的只是直接延伸。
如果我没有得到这个工作,我失败了我的学位这个模块。请stackoverflow不要让我失望!谢谢!
编辑:固定EXCEPTION但程序好像不能设置,尽管事情800,600,60,60
如果您已经为特定分辨率设计了应用程序,那么我怀疑您确实可以做什么。您拥有的唯一“真实”机会是尝试并添加一个“AffineTransform”来将您设计的分辨率下的图形缩放到预期的分辨率,但您需要将其添加到您的绘画例程中。 – MadProgrammer