如何在Java中将帧设置为无边框全屏,窗口式全屏和全屏?

问题描述 投票:0回答:1

我使用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的值而变化。

java frame fullscreen borderless windowed
1个回答
0
投票

尽管我不得不更改参数,但这很简单。对于字段,您需要:

    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;
        }
    }

感谢您花一些时间帮助我的人!

© www.soinside.com 2019 - 2024. All rights reserved.