【问题标题】:How do I fire an action when the user leaves a JTextBox?当用户离开 JTextBox 时如何触发操作?
【发布时间】:2009-10-05 23:48:04
【问题描述】:

我有一个 JTextField,我希望系统在用户离开文本字段时对用户输入的内容进行一些处理。但是,您可以仅添加到 JTextField 的 ActionListener 仅在用户按下 Enter 时触发。

我希望在用户以任何方式离开文本框时运行处理例程 - 选项卡、单击它、按 Enter 等。(有问题的处理是将用户键入的文本保存到合适的数据对象,没什么花哨的。)

我的 google-fu 在这方面失败了:我相信这是可能的,我只是不知道怎么做。

【问题讨论】:

    标签: java swing events jtextfield


    【解决方案1】:

    Add a FocusListener.

    值得注意的是,这是一个比较底层的监听器。在JComboBox 上,除非您找到特定 PL&F 插入的文本字段(可能还有按钮),否则它不会起作用。 Swing 这种方式有点奇怪(在许多其他方式中)。

    尽管为了我的钱,当焦点离开一个领域时发生的非修饰性变化会给用户体验带来糟糕的体验。使用文本字段文档上的侦听器对每次更改进行任何相关更改要好得多。

    【讨论】:

    • 啊哈! FocusListener 是我模糊记得的东西。有问题的操作是保存用户键入的文本 - 您认为通过文档上的侦听器更好吗?
    • 是的,但要明智。您可能希望确保不会在每次击键时都保存整个文档。保存之间的小休息时间(并且不要重叠)。如果文档很大(不太可能带有JTextField),那么大多数时候只需附加到日志中。话虽如此,移动领域可能是更迫切地节省开支的好时机。
    • 为了记录,焦点侦听器完全符合我的需要。谢谢!
    【解决方案2】:

    如果您想在输入时编辑文本,那么您应该使用 DocumentFilter。

    如果您想将文本作为一个完整的实体进行验证,那么您可以使用 InputVerifier。

    【讨论】:

      猜你喜欢
      • 2013-04-02
      • 1970-01-01
      • 2021-10-22
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      相关资源
      最近更新 更多