我有一个JTextField和AWT Canvas的简单GUI(为了防止为什么我使用AWT Canvas的反问题:我需要有一个窗把手)。AWT Canvas无法获得另一个可聚焦组件的存在焦点
画布是处理输入事件,这意味着它必须是可以聚焦的。我通过在构造函数中使用setFocusable(true)
来保证这一点,后来使用isFocusable()
进行检查确认它确实是可以聚焦的。
现在,JTextField在GUI打开时默认获得焦点。到目前为止我没有问题。但是,没有办法从该JTextField获取远离的焦点。
文章"The AWT Focus Subsystem"明确指出,如果点击某个可调焦组件,它将获得焦点。这不会发生,事实上,只有当窗口被取消激活并再次激活时,我才会收到零焦点更改事件,但是焦点会立即返回到JTextField。
显式调用requestFocus()
和requestFocusInWindow()
也没有帮助,后者总是返回false
。
如果我替换JTextField,我已经获得了与任何可聚焦组件相同的结果。如果Canvas是唯一可以调焦的容器,那么一切正常,因为它始终有焦点。
我失去了一些东西在这里?有没有什么办法可以让我的Canvas增益聚焦在另一个可聚焦组件的存在下,最好是不让这个聚焦组件变焦?
你确定'setEnabled(true)'确定吗?你可以用'isEnabled'来检查。 – toto2 2011-05-31 13:52:23
是的,它已启用。如果Canvas本身就在那里,这一切都可以正常工作。就在其他可聚焦组件/刚刚用JButton尝试过时,稍后会编辑主要问题)就会参与其中,但它根本无法获得重点。 – pdinklag 2011-06-01 04:46:41