Java 在JTextField中区分键入和粘贴

Java 在JTextField中区分键入和粘贴,java,swing,jtextfield,documentlistener,Java,Swing,Jtextfield,Documentlistener,我一直在四处寻找,没有找到任何解决这个问题的方法:我有一个JTextField,我想在用户将某些东西粘贴到其中时做一些事情,我发现: 它可以正常工作,除了我只想在用户粘贴内容时执行操作,而不是在文本字段中写入内容时执行操作,我想保存以前的值并将其与新值进行比较,如果它是空的,而现在不是空的,则执行操作,但这不起作用,因为当用户在文本字段中键入第一个字母时,它将在该条件下输入 如果有人知道如何与documentListener或其他任何监听器进行交互,这将非常有用 更新:因为有很多人问过,所以我想

我一直在四处寻找,没有找到任何解决这个问题的方法:我有一个JTextField,我想在用户将某些东西粘贴到其中时做一些事情,我发现:

它可以正常工作,除了我只想在用户粘贴内容时执行操作,而不是在文本字段中写入内容时执行操作,我想保存以前的值并将其与新值进行比较,如果它是空的,而现在不是空的,则执行操作,但这不起作用,因为当用户在文本字段中键入第一个字母时,它将在该条件下输入

如果有人知道如何与documentListener或其他任何监听器进行交互,这将非常有用

更新:因为有很多人问过,所以我想这样做是因为文本来自条形码阅读器或类似的设备

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

为什么粘贴的文本与键入的文本有任何区别?听起来像是设计问题。如果您指定一个更好的理由/要求,我们可能会想出一个更好的解决方案

我想在用户粘贴东西时做一些事情

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

如何使用documentListener执行此操作


也许你会考虑一个“粘贴”,意思是一次添加一个以上的字符。在这种情况下,您只需测试添加到
文档中的字符串长度

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

为什么?从UI设计的角度来看,这听起来是个坏主意。我想对粘贴的文本进行不同的处理,因为文本实际上来自条形码阅读器,而条形码阅读器就是这样做的,读取条形码并粘贴读取的文本。我将研究重写粘贴方法。感谢您抽出时间回答。