【问题标题】:JDialog box not gaining focusJDialog 框没有获得焦点
【发布时间】:2011-07-08 14:47:13
【问题描述】:

我正在生成一个无模式对话框,提示用户打开一个新窗口。可以通过两种方式打开该框,直接从我正在编写的框架的文件菜单或间接通过我的面板插入的框架。

当我直接通过文件菜单进行调用时,对话框会完全按照我的意愿显示焦点。但是当我让框架间接打开对话框时,它没有应有的焦点。

这两种打开对话框的方法似乎没有区别,在这两种情况下都调用了一个加载函数,直到5个方法调用之后才打开对话框。在这两种情况下,生成对话框的框架都是在生成框时实现的。在使对话框可见后,我尝试调用 requestFocus,但它似乎没有做任何事情。

关于对话框没有焦点的任何建议,或者我如何将焦点作为与通常有焦点的窗口分开的窗口?

【问题讨论】:

  • 他已经试过了,它会出现。我想你也可以试试grabFocus() 函数?
  • 你可能想看看问题stackoverflow.com/questions/309023/…
  • 什么“框架”?它是否有为对话框设置父组件的方法?如果没有,也许你应该联系框架的作者来提供这样的方法,而不是尝试围绕这个缺点编写代码。

标签: java swing user-interface focus jdialog


【解决方案1】:

在某些情况下,很难将 Focus 设置为预期的 top-level container,正如 here 所展示的那样,但要获得出色的解决方法,最好查看 camickr 的 Dialog Focus

【讨论】:

    【解决方案2】:

    创建对话框时,尝试将主 GUI 设置为对话框的父级。

    在第一种情况下,当您从菜单中单击时,它会自动将主 GUI 设置为对话框的父级,但在第二种情况下不会。

    因此,请确保在创建对话框时,始终将主 GUI/窗口设置为父窗口。

    大多数时候应该有帮助。

    【讨论】:

    • 这就是问题所在。当我间接打开对话框时,我设置顶级窗口的调用返回 null。我真的应该知道,我的 GUI 技能不如我看起来的其他 Java 技能:)
    猜你喜欢
    • 2017-03-12
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多