【问题标题】:Programmatically unfocus a TextField?以编程方式使 TextField 失焦?
【发布时间】:2013-01-30 18:12:09
【问题描述】:

在我看来,我只有一个可编辑的内容:TextField 中的文本。问题是,一旦 TextField 获得焦点,作为用户就永远不会摆脱焦点(因为没有其他可关注的内容)。当用户按 Enter 时,我想从 TextField 中移除焦点。我知道如何对按下的 Enter 键做出反应,但我不知道如何以编程方式使控件/TextField 失焦?

感谢任何提示!

【问题讨论】:

标签: focus javafx-2 textfield


【解决方案1】:

我承认我交叉发布了,但我在那里收到了一个回复,我想在这里分享:

在父级上调用requestFocus(),例如在我的情况下,包含 TextField 的 HBox。

https://forums.oracle.com/forums/thread.jspa?messageID=10852574 上的完整示例

【讨论】:

  • 如果您在 initialize() 方法中使用 PlatForm.RunLater 包装 textField.getParent.requestFocus() 调用,那么您不需要额外的输入键逻辑:)
  • 好吧,实际上我希望在用户编辑 TextField 并按下回车键确认他的更改后移除焦点:-)
  • 嗯好吧,我误解了你的问题:)
【解决方案2】:

是的,很抱歉,但我编辑并添加了正确的链接,如果由于某种原因未在此处显示:http://docs.oracle.com/javafx/2/api/javafx/scene/Node.html#setFocused(boolean)

【讨论】:

  • 谢谢,但不幸的是,这个方法是受保护的而不是公开的,所以如果不继承 TextField 就无法访问它,这似乎有点矫枉过正。我错过了什么吗?让 JavaFX 控件失去焦点应该不难):
  • 你可以通过为不同的 TextField 请求焦点来作弊,也许是一个不可见的 ;-)
  • 嗯,下一个问题是是否可以聚焦一个不可见的 TextField :P 而且我仍然必须继承一个。也许一个想法,仍然听起来不直观(不是你的错),如果有人知道一个简单/更自然的方法,我会稍等一下。
  • 嗯,实际上您已经非常接近修复:请求另一个控件的焦点,它不必是 TextField ;-)
猜你喜欢
  • 2020-02-07
  • 2011-12-26
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 2014-11-15
  • 2011-12-18
  • 1970-01-01
  • 2011-12-16
相关资源
最近更新 更多