在java中如何监视剪贴板?
我实现FlavorListener接口的flavorsChanged 方法,但是我在同一个窗口中连续复制不同的内容却不会触发这个方法,
需要切换到不同的窗口中才可以,比如在netbean中copy不同的东西不会触发,如果切换到IE中copy触发,再在IE中copy又不会触发了..... 1. ..
2. systemClipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard();
3. systemClipboard.addFlavorListener(this);
4. ..
5. public void flavorsChanged(FlavorEvent e) {
6. try {
7. System.out.println("Clipboard changed");
8. Clipboard clipboard = (Clipboard) e.getSource();
9. Transferable content = clipboard.getContents(this);
10. if (content != null &&content.isDataFlavorSupported(DataFlavor.stringFlavor)) {
11. String data = (String) content.getTransferData(DataFlavor.stringFlavor);
12. System.out.println(data );
13. }
14. } catch (UnsupportedFlavorException ex) {
15. //do nothing
16. } catch (IOException ex) {
17. //do nothing
18. }
19. } 请教这是怎么回事?
我实现FlavorListener接口的flavorsChanged 方法,但是我在同一个窗口中连续复制不同的内容却不会触发这个方法,
需要切换到不同的窗口中才可以,比如在netbean中copy不同的东西不会触发,如果切换到IE中copy触发,再在IE中copy又不会触发了..... 1. ..
2. systemClipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard();
3. systemClipboard.addFlavorListener(this);
4. ..
5. public void flavorsChanged(FlavorEvent e) {
6. try {
7. System.out.println("Clipboard changed");
8. Clipboard clipboard = (Clipboard) e.getSource();
9. Transferable content = clipboard.getContents(this);
10. if (content != null &&content.isDataFlavorSupported(DataFlavor.stringFlavor)) {
11. String data = (String) content.getTransferData(DataFlavor.stringFlavor);
12. System.out.println(data );
13. }
14. } catch (UnsupportedFlavorException ex) {
15. //do nothing
16. } catch (IOException ex) {
17. //do nothing
18. }
19. } 请教这是怎么回事?
覆盖lostOwnership(Clipboard clipboard,Transferable contents)方法。
这个接口的“注册”很简单,在调用Clipboard对象的setContents(Transferable,ClipboardOwner)方法时,输入第二个参数就行了。
注意:如果你想要一直监视剪贴板就在lostOwnership方法中调用你要监视的剪贴板的setContents方法“注册”自己(指的是ClipboardOwner接口)。 FlavorListenter接口的方法只有在你所复制的内容的风格(DataFlavor)集合变化时才被回调。