在什么情况下JComponent请求获得焦点?如何知道哪个组件实际上是焦点所有者?

时间:2011-03-14 09:11:34

标签: java swing jtoolbar

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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