我使用GraphicsDevice对Java窗口进行全屏显示,但在应用程序运行时我不知道如何更改这些设置。
public void act(java.awt.Frame window) {
if (state == SCREEN.FULLSCREEN) {
if (ev.isFullScreenSupported()) {
isFullScreen = true;
window.dispose();
ev.setFullScreenWindow(window);
window.setVisible(true);
}
}
if (state == SCREEN.WINDOWED) {
isFullScreen = false;
window.dispose();
ev.setFullScreenWindow(null);
window.setUndecorated(false);
window.setVisible(true);
}
if (state == SCREEN.BORDERLESS) {
isFullScreen = true;
window.dispose();
ev.setFullScreenWindow(null);
window.setUndecorated(true);
window.setVisible(true);
}
}
[当我无限运行此代码时,代码只是一遍又一遍地创建一个新窗口,但是我想制作一个新窗口,以便屏幕根据state
的值而变化。
尽管我不得不更改参数,但这很简单。对于字段,您需要:
public enum ScreenState {
fullscreen, borderless, windowed, none
};
public static ScreenState current;
private static GraphicsEnvironment env =
GraphicsEnvironment.getLocalGraphicsEnvironment();
private static GraphicsDevice ev = env.getDefaultScreenDevice();
对于该方法,您可以执行以下操作:
public void changeWindow(ScreenState applied, JFrame frame) {
if (applied == ScreenState.fullscreen && current != ScreenState.fullscreen) {
if (ev.isFullScreenSupported()) {
ev.setFullScreenWindow(frame);
}
current = ScreenState.fullscreen;
}
if (applied == ScreenState.borderless && current != ScreenState.borderless) {
frame.setUndecorated(true);
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
current = ScreenState.borderless;
}
if (applied == ScreenState.windowed && current != ScreenState.windowed) {
frame.setUndecorated(false);
// you can choose to make the screen fit or not
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
current = ScreenState.windowed;
}
}
感谢您花一些时间帮助我的人!