我在接下來的四十分鐘內在我的大學舉辦一場音樂會,其中我正在投影一個我在幾個不同屏幕上編寫的全屏應用程序。我只能在今晚低調地看到投影系統,看到當我的屏幕分辨率急劇變化時,但是當我執行我的程序時,它就像使用我的舊屏幕分辨率一樣工作。我已經將整個可視化顯示編碼爲精確的像素值,但現在一半不顯示,因爲它被推離屏幕的一側。我試過在系統偏好設置中手動更改顯示,但它沒有任何作用。我試過創建不同的顯示模式來適應分辨率,但我不斷收到消息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