【发布时间】:2021-03-29 05:43:33
【问题描述】:
我想创建一个可扩展面板(为特定任务容纳多个 UI 元素)。面板可以通过用户操作展开,并且只要面板中的任何子组件具有焦点,就应该保持展开状态。当用户将焦点放在面板外的某处时,它应该关闭。
有没有简单的方法
- 在焦点移出任何子组件时获取 focuslost 事件
- 或者查询面板的任何子组件是否还有焦点?
或者我是否需要在每个子组件上注册/检查焦点(-事件)? (因为这应该是一个通用的可用面板,所以我需要一个独立于子组件的特定层次结构的通用方法。)
【问题讨论】:
-
我的猜测是,您必须监视 JFrame 中每个 Swing 组件的焦点,包括扩展 JPanel 的内部和外部。否则,您怎么知道焦点在扩展 JPanel 之外的组件上?我会在每个 JPanel 的基础上进行此监控。 JPanel getChildren 方法应该很有用。
标签: java swing user-interface focus