gpt4 book ai didi

java - 全屏 Swing 框架在 Linux 中无法正确聚焦(Windows 没问题)

转载 作者:IT王子 更新时间:2023-10-29 01:05:10 26 4
gpt4 key购买 nike

我有一个应用程序生成几个全屏无装饰框架(基本上控制所有屏幕空间)。我的问题是,某些框架上的一些按钮被设计为“切换屏幕”,这基本上意味着显示另一个框架而不是当前框架。

我已经在 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();

最佳答案

target.requestFocus();

来自 JavaDocs:

Note that the use of this method is discouraged because its behavior is platform dependent. Instead we recommend the use of requestFocusInWindow(). If you would like more information on focus, see How to Use the Focus Subsystem, a section in The Java Tutorial.

关于java - 全屏 Swing 框架在 Linux 中无法正确聚焦(Windows 没问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6667558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com