我有一个应用程序,它会生成几个全屏无装饰框架(基本上控制整个屏幕空间)。我的问题是,在某些框架上的某些按钮被设计为“切换屏幕”,这基本上意味着显示另一个框架而不是当前的框架。
在Windows中,我很容易实现这一点:
target.setVisible(true);
target.requestFocus();
this.parent.setVisible(false);
其中target
是我要切换到的框架。这个方法有效是因为最初,我将所有框架都设置为不可见,除了第一个“主”框架。
现在,当我将其移植到Linux环境中时,切换框架时会出现丑陋的“闪烁”。在这一瞬间,我可以看到我的桌面背景和任何打开的窗口,它们位于我的应用程序后面。我之前在Windows中遇到过这个问题,并通过在使旧框架不可见之前将目标框架聚焦来解决了它。
有什么想法可以解决这个Linux特定的问题吗?
编辑:
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();
parent.setVisible(false);
延迟放入SwingUtilities.invokeLater()
中吗?这样或许会有所帮助。 - jfpoilpret