【发布时间】:2019-03-19 15:34:58
【问题描述】:
我有一个 JFrame,其中包含各种常见的面板和小部件,并且我有一个 JPanel,我将其用作该 JFrame 的 glassPane。我希望能够在可见时将键盘焦点遍历限制到 glassPane 中的组件。
我的问题可能会也可能不会因为后台线程启动一个进程导致进度对话框出现并随后消失这一事实而复杂化,这会从我的 glassPane 中的小部件中窃取焦点,但将其返回到我下方的某个小部件玻璃窗格。
我尝试将 JFrame 的焦点遍历策略设置为仅允许 glassPane 被聚焦的策略,但这似乎没有任何效果。 (也许我做错了?)
任何帮助将不胜感激。
【问题讨论】:
-
您的应用程序听起来相当复杂。出于好奇,您在玻璃板中展示了什么样的组件?为什么是玻璃板?
-
glassPane 包含一个滚动的 TextPane、一个 JCheckBox 和一个 JButton。它用于显示 EULA,迫使用户在使用应用程序之前接受其条款。当我使用模态 JDialog 时,我的用户抱怨,所以我正在研究替代方案。
-
也许我做错了 - 也许,如果没有看到你的代码就很难判断 :-) 也就是说,管理玻璃窗格 很棘手(会'不要期望自定义 ftp 会过度有用,因为它不负责 mouseEvents),因此您可以考虑使用 JLayer(从 jdk7 开始,或 JXLayer 用于 jdk6)。