【发布时间】:2011-10-03 19:09:14
【问题描述】:
我有一个应用程序,它产生几个全屏无装饰帧(基本上控制所有屏幕空间)。我的问题是某些框架上的某些按钮被设计为“切换屏幕”,这基本上意味着显示另一个框架而不是当前框架。
我在 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();
【问题讨论】:
-
请阅读[此线程][1] [1]:stackoverflow.com/questions/6586064/…
-
谢谢,我去看看。
-
@mKorbel - 我不认为这正是我想要的。 OP 正在处理击键问题,他的问题与我的不完全相同。
-
whats
KeyStrokes与Focus有关系,也许更多信息(实际上对于所有可能的事件都未完成)stackoverflow.com/questions/309023/…,或者OPhas some problem with setFocusto the concreteJComponents??? -
我有直接绘制到显卡的全屏框架,而不是窗口。问题不在于将焦点显式更改为框架,因为我可以在 Windows 环境中执行此操作。但是,我的代码在 Linux 中失败了。我在问为什么它在 Linux 中失败,我怎么不能让它在 Linux 中失败。