import java.awt.EventQueue; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.FlavorEvent; import java.awt.datatransfer.FlavorListener; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.TrayIcon; import java.io.IOException; public class JClipboard { private Clipboard systemClipboard; public JClipboard(final TrayIcon ti) { // Get system clipboard systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); systemClipboard.addFlavorListener(new FlavorListener() { public void flavorsChanged(FlavorEvent e) { System.out.println(e); Clipboard clipboard = (Clipboard)e.getSource(); try { Transferable content = clipboard.getContents(this); if (content == null) { System.out.println("Content is empty!"); return; } if (!content.isDataFlavorSupported(DataFlavor.stringFlavor)) { System.out.println("StringFlavor not supported!"); return; } try { String data = (String)content.getTransferData(DataFlavor.stringFlavor); ti.displayMessage("Clipboard Activity", data, TrayIcon.MessageType.INFO); } catch (UnsupportedFlavorException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } catch (IllegalStateException ex) { ex.printStackTrace(); } } }); } }