我有一个应用程序,它生成几个全屏无装饰框架(基本上控制所有屏幕空间)。我的问题是,某些框架上的某些按钮被设计为“切换屏幕”,这基本上意味着显示另一个框架而不是当前框架。
我在 Windows 中使用以下方法轻松实现了这一点:
target.setVisible(true);
target.requestFocus();
this.parent.setVisible(false);
Where target
是我要切换到的框架。这是有效的,因为最初,我将除第一个“主”框架之外的所有框架设置为不可见。
现在,当我将其移植到 Linux 环境中时,在更改帧时会出现丑陋的“闪烁”。在这一瞬间,我可以看到我的桌面背景以及我的应用程序后面存在的任何打开的窗口。我之前在 Windows 中遇到过这个问题,并通过在使旧框架不可见之前聚焦目标框架来修复它。
关于如何解决这个 Linux 特定问题有什么想法吗?
edit:
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
setUndecorated(true);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0,0,screenSize.width, screenSize.height);
this.getContentPane().setLayout(null);
setVisible(true);
validate();
target.requestFocus();
来自 JavaDocs:
请注意,不鼓励使用此方法,因为它的行为依赖于平台。相反,我们建议使用requestFocusInWindow()
。如果您想了解有关焦点的更多信息,请参阅如何使用焦点子系统 http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html,中的一个部分Java 教程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)