【发布时间】:2012-06-10 21:14:40
【问题描述】:
我正在开发一个使用默认 Swing 方法来处理焦点的 Swing 应用程序。焦点没有像我预期的那样工作。
在一种情况下,我有一个 JTextField,我调用 .requestFocusInWindow() 当窗口显示时,JLabel 具有焦点
JLabel 的 Java 6 文档说“因此,它无法获得键盘焦点”。 http://docs.oracle.com/javase/6/docs/api/javax/swing/JLabel.html
但是,我有一个示例应用程序,它显示 JLabel 接收焦点,并且 KeyboardFocusManager.getFocusOwner() 返回该组件。 (http://github.com/akinsgre/swingStarter)
类的代码是https://raw.github.com/akinsgre/swingStarter/master/src/main/java/test/HelloWorldSwing.java
谁能帮我理解或解释我遗漏了什么?
【问题讨论】:
-
我们大多数人都不会去 unknow_depots,尤其是对于未来的读者,为了更好的帮助,请尽快使用SSCCE、JLabel 和可聚焦的 JComponent 之一编辑您的问题,例如JTextField 展示你的 Focus 和 Focusable
-
不知道为什么 JLabel 会受到关注,而是对您的其他问题提出建议。 requestFocus() 的 javadoc 建议不要使用该方法,因为它依赖于平台,并尽可能使用 requestFocusInWindow()。
-
mKorbel:我以为我正在这样做。 Github 存储库(未知?)是一个 maven 项目,具有单个类文件。但是没问题。类文件在这里raw.github.com/akinsgre/swingStarter/master/src/main/java/test/…(难道不是一个指向源的链接比内联粘贴代码更好)?
-
谢谢丹尼。我在源代码中使用 requestFocusInWindow。但这并没有给我任何不同的结果。
-
“我有一个 JTextField,我称之为 .requestFocus()” 这不是
HelloWorldSwing中声明label.requestFocusInWindow();的行所建议的内容
标签: java swing focusmanager