【问题标题】:In which situation does a JComponent request to get focus? How to know which component is actually the focus owner?JComponent 在什么情况下请求获得焦点?如何知道哪个组件实际上是焦点所有者?
【发布时间】:2011-03-14 09:11:33
【问题描述】:

我的应用程序中有一个我无法找到的错误。

我有一些可选择和可调整大小的 JPanel ,选择时会显示一个边框。对于其中一些人来说,边界在移动后消失了,显然没有任何理由。 从现在开始,我在我的应用程序中没有发现任何错误(没有其他组件请求或获得焦点),但我注意到当我选择的组件失去焦点时,JToolbar 获得它。

所以我的问题是,在哪些情况下(可能涉及 MouseEvents),JToolbar 组件是否请求获得焦点?

或者,是否有禁用 JToolbar 以请求焦点或知道哪个组件是当前焦点所有者?

【问题讨论】:

  • @StanislavL :是的,当然,你是对的。无论如何,似乎即使禁用对 jtoolbar 的关注,仍然有一些其他组件获得焦点或禁用对我的组件的关注。

标签: java swing jtoolbar


【解决方案1】:

我认为很难防止获得焦点。有一些情况,例如当焦点必须不在面板上时,工具栏上的可编辑 JCombobox。我会玩 FocusEvent 如果public Component getOppositeComponent() 返回面板的其中一个子项,则边框应保留。

【讨论】:

    【解决方案2】:

    我终于解决了我的问题。我注意到将焦点组件设置为不可见,会自动释放焦点。 JToolbar 没有直接参与这个过程,但它是组件层次结构中直接向上的组件,因此它失去了焦点。因此,如果我必须将一个组件设置为不可见然后再次可见,它必须再次显式获取焦点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多