( 1 ) 有没有办法监听任何 剪贴板更新(包括 Ctrl+C/X、PrtSc(屏幕截图)和其他程序所做的更改) java ?我试过这个:
Toolkit.getDefaultToolkit().getSystemClipboard().addFlavorListener(new FlavorListener() {
@Override
public void flavorsChanged(FlavorEvent e) {
System.out.println("Copy detected");
}
});
这可以很好地处理 Ctrl+C 更改,但不会注意到不是用户手动所做的更改,例如通过屏幕截图软件或 PrtSc 按钮。
( 2 ) 有没有办法监听粘贴 操作(Ctrl+V、“粘贴”按钮等)?我想要类似的东西(或者只是具有类似的功能):
// ...
@Override
public void prePaste(PasteEvent e) {
System.out.println("Paste detected");
e.cancel(); // reject the paste (so that user's Ctrl+V pastes nothing)
}
// ...
最佳答案
在将内容粘贴到复合 Material 中时进行捕获的一种方法是添加一个监听器“addKeyListener”。
Java 8
KeyAdapter keyAdapter = new KeyAdapter()
{
@Override
public void keyPressed(KeyEvent keyEvent)
{
if(((keyEvent.getModifiers() & InputEvent.CTRL_MASK) != 0) && (keyEvent.getKeyCode() == KeyEvent.VK_V))
{
String text = null;
try
{
text = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
System.out.println(text);
}
catch(Exception e)
{
e.printStackTrace();
}
keyEvent.consume();
}
}
};
stringTF.addKeyListener(keyAdapter);
对于版本 9 以上的 java 你可以使用下面的条件
if(((keyEvent.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) != 0) && (keyEvent.getKeyCode() == KeyEvent.VK_V))
{
// Code ....
}
关于Java - 从剪贴板监听复制和粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53042779/