【问题标题】:Is there an easy way to get characters from the keyboard without hitting enter in Java?有没有一种简单的方法可以从键盘获取字符而无需在 Java 中按 Enter 键?
【发布时间】:2009-11-13 17:56:42
【问题描述】:

我想知道是否有一种简单的方法可以从 Java 中的 JTextField 获取字符输入,而不是在输入键之后。

在我的例子中,我希望读取字符(文本),当按下回车键时,对已经收集的字符执行一些操作。

【问题讨论】:

    标签: java get character jtextfield


    【解决方案1】:

    尝试在 JTextField 上添加 KeyListener

    【讨论】:

    • 谢谢凯文,我去看看。
    【解决方案2】:

    虽然有多种方法可以监听按键事件,但对于您想要执行的任务,您似乎应该等到输入按键,然后参考 jtextfield 的值执行您需要执行的操作。 jtextfield 已经在读取用户键入的字符,您不需要自定义处理程序来复制它(除非您真的想逐个字符地进行操作,并包括非文本字符(即“heg[backspace]llo[ enter]" 的处理方式与 "hello[enter]" 不同)。

    【讨论】:

    • 有没有办法排除控制字符,也许通过定义一个范围或给出一些预定义的常量作为参数?我看过一个按键类,但它似乎更针对控制游戏等,但据我了解,您可以注册您感兴趣的按键。但我只是简单地看了一遍。
    • Brian 给出了迄今为止最好的答案。无论如何,控制字符都不会出现在文本字段的文本字符串中,那里的文本很好。不,您不能注册单个字符。但是,您应该做的是注册一个 keyListener 来处理 ENTER,当它发生时。你会想要转移到下一个字段或其他东西。
    【解决方案3】:

    您可以将 DocumentListener 添加到 JTextField 的文档中,即

    textField.getDocument().addDocumentListener(...);
    

    【讨论】:

      【解决方案4】:

      用户是否允许粘贴文本? (他们可以右键单击并选择粘贴吗?)

      如果是这样,KeyListeners 将不起作用,您将需要 DocumentListeners。

      【讨论】:

      • 嗯,这很有趣,我还没有想过。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 2017-07-05
      • 2015-05-12
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多