我正在开发一个在全屏独占模式下使用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");
}
}
是否有解决方法或设置以避免这种情况?
答案 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让框架始终位于顶部。 谢谢