区分 JTextField 中的键入和粘贴

Posted

技术标签:

【中文标题】区分 JTextField 中的键入和粘贴【英文标题】:Differentiate between typing and pasting in JTextField 【发布时间】:2017-05-16 04:38:18 【问题描述】:

我一直在环顾四周,但无法找到任何解决此问题的方法:我有一个 JTextField,当用户在其中粘贴某些内容时我想做一些事情,我发现了这个:@987654321 @

这行得通,除了我只想在用户粘贴某些内容时执行操作,而不是在它在文本字段上写入时执行操作,我已经保存了它的先前值并将其与新值进行比较,如果它是空的,现在不是,做一些事情,但这不起作用,因为当用户在文本字段中键入第一个字母时,它将进入该条件。

如果有人知道如何通过 documentListener 或任何其他侦听器做到这一点,那将非常有帮助。

更新:既然很多人都问过,我想这样做的原因是因为文本将来自条形码阅读器或一些类似的设备。

【问题讨论】:

为什么?从 UI 设计的角度来看,这听起来是个坏主意。 【参考方案1】:

除了我只想在用户粘贴某些东西时做事

为什么粘贴文本的处理方式与键入的文本不同?听起来像是设计问题。如果您为此指定更好的理由/要求,我们可能会提出更好的解决方案。

当用户在其中粘贴某些内容时,我想做一些事情

您也许可以覆盖JTextFieldpaste() 方法。只需重写调用super.paste() 的方法,然后添加您的自定义代码。

如何使用 documentListener 来实现

也许您会认为“粘贴”意味着一次添加多个字符。在这种情况下,您只需测试添加到 Document 的字符串的长度。

【讨论】:

我想区别对待粘贴的文本,因为文本实际上将来自条形码阅读器,它会读取条形码并粘贴读取的文本。我将研究覆盖粘贴方法。感谢您花时间回答。【参考方案2】:

我能够通过配置我的条形码扫描仪并使其在每次读取后发送一个“新行”来解决我的问题,并在每次发生这种情况时使用 JTextField 的 actionPerformed 执行我的代码。感谢所有试图提供帮助的人。

【讨论】:

以上是关于区分 JTextField 中的键入和粘贴的主要内容,如果未能解决你的问题,请参考以下文章

在 jTextfield 中禁用“粘贴”

实现JTextfield 的右键 复制剪切粘贴功能。

键入时将文本转换为大写

是否可以使用 jtextfield 和 Jlist 进行自动完成?

Java JTextField 空字符串错误

JTextField需要两倍的输入,但为什么呢?