我已经在Java中使用Swing创建了一个表单。在表单中,我使用了一个文本框,在每次按下按键时都必须设置焦点。如何将焦点设置在Java中的特定组件上?如何在Swing中设置Textfield的焦点?
回答
会Component.requestFocus()
给你你需要什么?
谢谢,让我看看它是否适用于我 – 2009-09-15 06:10:36
花了我五分钟找到它...非常适合“简单”搜索:-(啊,Java API文档不是典范清楚无论如何:-) – Joey 2009-09-15 06:12:48
仅供参考,[jComponent的javadocs](http://docs.oracle.com/javase/7/docs/api/index.html)说'requestFocus()',“使用这个方法是不鼓励的,因为它的行为是依赖于平台的我们推荐使用[requestFocusInWindow()](http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocusInWindow())。如果您想了解关于焦点的更多信息,请参见The Java Tutorial中的一节,请参阅[如何使用焦点子系统](http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html)。 “ – 2014-09-11 14:26:56
既然我们已经搜索了API,那么我们需要做的就是读取API。
根据API文档:
“正因为如此 方法的焦点行为是与平台相关的, 开发商大力鼓励 使用requestFocusInWindow时 可能。”
这会工作..
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Component.requestFocus();
}
});
请注意,上述所有因为某种原因在JOptionPane中失败。多试错(比上述既定的5分钟,反正)后,这里是最后的工作:
final JTextField usernameField = new JTextField();
// ...
usernameField.addAncestorListener(new RequestFocusListener());
JOptionPane.showOptionDialog(this, panel, "Credentials", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null);
public class RequestFocusListener implements AncestorListener {
@Override
public void ancestorAdded(final AncestorEvent e) {
final AncestorListener al = this;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JComponent component = e.getComponent();
component.requestFocusInWindow();
component.removeAncestorListener(al);
}
});
}
@Override
public void ancestorMoved(final AncestorEvent e) {
}
@Override
public void ancestorRemoved(final AncestorEvent e) {
}
}
谢谢你的解决方案,这是唯一的方法它工作。 – MyPasswordIsLasercats 2015-01-12 11:23:55
您还可以使用JComponent.grabFocus();
是同
[JComponent.grabFocus()](http://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#grabFocus--)的Javadoc明确指出此方法应该不被客户端代码使用,并建议使用'requestFocusInWindow()'方法,这在其他答案中已经提到。 – 2015-05-23 08:50:06
- 1. 如何将焦点设置为materialUI TextField?
- 2. 无法为Extjs textfield设置焦点
- 3. 将焦点设置为JList并将光标放在textField上swing java autocomplete
- 4. 如何在Silverlight中设置焦点
- 5. 如何在Elm中设置焦点?
- 6. 在DataGrid中设置焦点
- 7. 在QTableView中设置焦点
- 8. 在ASP中设置焦点
- 9. 如何使用Swift 3在webview中检测textfield中的焦点?
- 10. 如何在设置焦点控制
- 11. 如何在Firefox上设置“焦点”?
- 12. 如何将焦点设置在角2
- 13. 如何设置焦点节点Devexpress TreeListControl
- 14. 将焦点集中在Extjs textfield
- 15. Android TextField:以编程方式设置焦点+软输入
- 16. 如何设置按钮上的焦点?
- 17. 如何在textfield中设置nextline
- 18. 如何在TextField中设置光标
- 19. textfield中的键盘焦点问题(Codenameone)
- 20. ios8 TextField中的文本弹出焦点
- 21. 从TextField删除焦点JavaFX
- 22. 如何设置焦点在WPF中的网格中的一行
- 23. 设置焦点在android
- 24. 如何在位置顶部设置TextField?
- 25. Angularjs设置焦点
- 26. nyroModal设置焦点
- 27. 如何在angular.js中点击li(标签)设置焦点/活动
- 28. 如何在JavaFX中禁用从textField移动焦点
- 29. 如何在GridView中设置选中网格的焦点
- 30. 如何设置逻辑焦点而不提供键盘焦点?
10个问题,没有人回答接受... – 2009-09-15 06:10:26