如何实现全屏独占模式API

时间:2014-03-30 06:34:39

标签: java netbeans

我有一个使用netbeans在GUI中制作的大型java程序,其中我有很多java文件。我使用过frame.setExtendedState(JFrame.MAXIMIZED_BOTH);,但对我来说效果不佳。我真正想要的是,当我遇到这个API时,这些项目会重新调整到全屏大小。我想知道如何在我的程序中实现此API。问题是我是一个新手(我使用Netbeans GUI完成大部分程序),我不知道我应该在哪里添加代码以使其使用此API

有没有简单的方法呢?哪个不需要我重新制作整个节目?

1 个答案:

答案 0 :(得分:2)

你应该通过Full Exclusive Mode tutorial。一切都是检查是否支持全屏模式。如果是,则获取屏幕设备和setFullScreenWindow(...)。如果不支持,只需使用常规窗口。

见这个简单的例子

import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class FullWindow extends JFrame {
    private boolean isFullScreen = false;
    private GraphicsDevice device;

    public FullWindow(GraphicsDevice device) {
        this.device = device;
        initFullScreen();
    }

    private void initFullScreen() {
        isFullScreen = device.isFullScreenSupported();
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setUndecorated(isFullScreen);
        setResizable(!isFullScreen);
        if (isFullScreen) {
            // Full-screen mode
            device.setFullScreenWindow(this);
            validate();
        } else {
            // Windowed mode
            this.setExtendedState(MAXIMIZED_BOTH);
            this.setVisible(true);
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                GraphicsEnvironment env = GraphicsEnvironment
                        .getLocalGraphicsEnvironment();
                GraphicsDevice device = env.getDefaultScreenDevice();
                new FullWindow(device);
            }
        });
    }
}