在Windows对话框弹出窗口中,全屏独占模式下的AWT帧最小化

时间:2014-06-04 15:07:34

标签: java awt fullscreen

我正在开发一个在全屏独占模式下使用awt框架的应用程序。 Everythings工作正常,直到Windows弹出窗口可见。 这将窃取焦点,我的应用程序将被最小化。

这是我的框架初始化代码:

if (ApplicationConfig.getInstance().useFullscreenMode()) {
    frame.setUndecorated(true);
    frame.setResizable(false);

    if (monitor.isFullScreenSupported()) {
        monitor.setFullScreenWindow(frame);
        if (monitor.isDisplayChangeSupported()) {
            DisplayMode defaultMode = new DisplayMode(
                    (int) appDimension.getWidth(),
                    (int) appDimension.getHeight(),
                    32,
                    DisplayMode.REFRESH_RATE_UNKNOWN);

            monitor.setDisplayMode(defaultMode);
            frame.setFulscreenDisplayMode(defaultMode);

            DisplayMode selectedMode = monitor.getDisplayMode();
            log.debug("Setting fullscreen display mode to " + selectedMode.getWidth() + "x" + selectedMode.getHeight() +
                    " color depth: " + selectedMode.getBitDepth() + " refresh rate: " + selectedMode.getRefreshRate());
        } else {
            log.error("Change display mode not supported");
        }
    } else {
        log.error("Full screen not supported");
    }
}

是否有解决方法或设置以避免这种情况?

2 个答案:

答案 0 :(得分:2)

窗口管理器通常不强制执行应用程序窗口模式,对于自定义显示模式应用程序,wm被强制要么让你退出全屏或最小化,因为它不能尊重维护你自己的窗口分辨率的另一个窗口的dpi设置

这是一个原因,在Window O.S.的背景下解释here

对于某种自助服务终端系统是什么?然后将整个应用程序设为shell,如下所述:Keeping a Windows application on top of other windows and in focus - always

任务管理器仍然会弹出,并且alt tabbing应该照常工作。

在linux中进行单个应用程序登录的类似步骤: http://www.instructables.com/id/Setting-Up-Ubuntu-as-a-Kiosk-Web-Appliance/?ALLSTEPS

要禁用USB修复,请参阅此问题的答案:https://superuser.com/questions/33986/is-it-possible-to-disable-the-scan-and-fix-message-when-inserting-an-sd-card

请注意,第一个答案需要修复磁盘,如果向下滚动则有禁用该特定对话框的步骤。

答案 1 :(得分:0)

设置awt框架模态类型修复了我的问题。 正如Lorenzo所提到的,使用APPLICATION_EXCLUDE让框架始终位于顶部。 谢谢