当用户将文本粘贴到我的程序中时,我需要触发一个事件,特别是JTextArea。是否有与系统无关的方法来检测粘贴命令?我一直在四处寻找,但似乎无法为此找到听众。我愿意接受一个非系统安全的解决方法,但我希望有一个通用的方法。
答案 0 :(得分:2)
为什么要听“贴”?为什么不简单地使用添加到作为JTextArea的“模型”的PlainDocument的DocumentListener?这将通知您文档的所有更改,无论来源如何。如果您想在收听时阻止修改文档,请使用DocumentFilter。无论如何,如果这是一个Swing GUI,你可能根本就不应该使用KeyListeners。
答案 1 :(得分:1)
KeyEvent
有一个名为VK_PASTE
的常量值,可以在KeyListener#keyPressed(KeyEvent e)
内使用:
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode()) {
case KeyEvent.VK_PASTE:
// do stuff when a paste occurs
}
}
还有VK_CUT
和VK_COPY
,这可能会有所帮助。根据文件,所有这些都应该是系统独立的。