# java.awt.datatransfer

***

**1. Copying Text to Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection text = new StringSelection("Hello, world!");
clipboard.setContents(text, null);
```

**2. Retrieving Text from Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = clipboard.getContents(null);
String text = (String) contents.getTransferData(DataFlavor.stringFlavor);
```

**3. Setting an Image to Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
BufferedImage image = new BufferedImage(...);
ImageTransferable imageTransferable = new ImageTransferable(image);
clipboard.setContents(imageTransferable, null);
```

**4. Retrieving an Image from Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = clipboard.getContents(null);
BufferedImage image = (BufferedImage) contents.getTransferData(DataFlavor.imageFlavor);
```

**5. Copying a File to Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
FileTransferable fileTransferable = new FileTransferable(new File("file.txt"));
clipboard.setContents(fileTransferable, null);
```

**6. Retrieving a File from Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = clipboard.getContents(null);
File file = (File) contents.getTransferData(DataFlavor.javaFileListFlavor);
```

**7. Checking Clipboard Contents**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
boolean hasText = clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor);
boolean hasImage = clipboard.isDataFlavorAvailable(DataFlavor.imageFlavor);
```

**8. Copying HTML to Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
HTMLTransferable htmlTransferable = new HTMLTransferable("<h1>Hello, world!</h1>");
clipboard.setContents(htmlTransferable, null);
```

**9. Retrieving HTML from Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = clipboard.getContents(null);
String html = (String) contents.getTransferData(DataFlavor.htmlFlavor);
```

**10. Customizing Data Flavors**

```java
DataFlavor customFlavor = new DataFlavor("application/x-my-custom-flavor", "My Custom Flavor");
```

**11. Drag and Drop from Clipboard**

```java
JLabel label = new JLabel();
TransferHandler transferHandler = new TransferHandler("text") {
    @Override
    public boolean canImport(TransferSupport support) {
        return support.isDataFlavorSupported(DataFlavor.stringFlavor);
    }
    @Override
    public boolean importData(TransferSupport support) {
        String text = (String) support.getTransferable().getTransferData(DataFlavor.stringFlavor);
        label.setText(text);
        return true;
    }
};
label.setTransferHandler(transferHandler);
```

**12. Drag and Drop to Clipboard**

```java
JLabel label = new JLabel("Drag here to copy");
TransferHandler transferHandler = new TransferHandler() {
    @Override
    public boolean canImport(TransferSupport support) {
        return false;
    }
    @Override
    public int getSourceActions(JComponent c) {
        return COPY;
    }
    @Override
    protected Transferable createTransferable(JComponent c) {
        String text = ((JLabel)c).getText();
        return new StringSelection(text);
    }
};
label.setTransferHandler(transferHandler);
```

**13. Copy from Text Editor**

```java
JTextArea textEditor = new JTextArea();
textEditor.copy();
```

**14. Paste to Text Editor**

```java
JTextArea textEditor = new JTextArea();
textEditor.paste();
```

**15. Cut from Text Editor**

```java
JTextArea textEditor = new JTextArea();
textEditor.cut();
```

**16. Copy from Rich Text Editor**

```java
JTextPane richTextEditor = new JTextPane();
richTextEditor.copy();
```

**17. Paste to Rich Text Editor**

```java
JTextPane richTextEditor = new JTextPane();
richTextEditor.paste();
```

**18. Cut from Rich Text Editor**

```java
JTextPane richTextEditor = new JTextPane();
richTextEditor.cut();
```

**19. Copy from JTable**

```java
JTable table = new JTable();
table.copy();
```

**20. Paste to JTable**

```java
JTable table = new JTable();
table.paste();
```

**21. Cut from JTable**

```java
JTable table = new JTable();
table.cut();
```

**22. Copy from JTree**

```java
JTree tree = new JTree();
tree.copy();
```

**23. Paste to JTree**

```java
JTree tree = new JTree();
tree.paste();
```

**24. Cut from JTree**

```java
JTree tree = new JTree();
tree.cut();
```

**25. Copy from JList**

```java
JList list = new JList();
list.copy();
```

**26. Paste to JList**

```java
JList list = new JList();
list.paste();
```

**27. Cut from JList**

```java
JList list = new JList();
list.cut();
```

**28. Copy from JComboBox**

```java
JComboBox comboBox = new JComboBox();
comboBox.copy();
```

**29. Paste to JComboBox**

```java
JComboBox comboBox = new JComboBox();
comboBox.paste();
```

**30. Cut from JComboBox**

```java
JComboBox comboBox = new JComboBox();
comboBox.cut();
```

**31. Copy from Swing Component**

```java
Component component = new JPanel();
component.copy();
```

**32. Paste to Swing Component**

```java
Component component = new JPanel();
component.paste();
```

**33. Cut from Swing Component**

```java
Component component = new JPanel();
component.cut();
```

**34. Copy from System Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transferable = clipboard.getContents(null);
```

**35. Paste to System Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(transferable, null);
```

**36. Cut from System Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(null, null);
```

**37. Transfer Data Using SwingWorker**

```java
SwingWorker<Void, Void> transferWorker = new SwingWorker<>() {
    @Override
    protected Void doInBackground() throws Exception {
        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        transferable = clipboard.getContents(null);
        return null;
    }
    @Override
    protected void done() {
        // Handle the transfer operation
    }
};
transferWorker.execute();
```

**38. Use Clipboard Owner Manager**

```java
ClipboardOwnerManager ownerManager = ClipboardOwnerManager.getClipboardOwnerManager();
ownerManager.setClipboardOwner(new ClipboardOwner() {
    @Override
    public void lostOwnership(Clipboard clipboard, Transferable contents) {
        // Handle clipboard ownership loss
    }
});
```

**39. Suspend Clipboard Notifications**

```java
System.setClipboard(null);
```

**40. Restore Clipboard Notifications**

```java
Clipboard clipboard = new Clipboard("My App");
System.setClipboard(clipboard);
```

**41. Copy Text from Reader**

```java
Reader reader = new FileReader("file.txt");
BufferedReader bufferedReader = new BufferedReader(reader);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(new StringTransferable(bufferedReader), null);
```

**42. Paste Text to Writer**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transferable = clipboard.getContents(null);
Writer writer = new FileWriter("file.txt");
BufferedWriter bufferedWriter = new BufferedWriter(writer);
bufferedWriter.write(new String((byte[]) transferable.getTransferData(DataFlavor.stringFlavor)));
```

**43. Copy Text from ByteArrayInputStream**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
ByteArrayInputStream bais = new ByteArrayInputStream("Hello, world!".getBytes());
clipboard.setContents(new ByteArrayTransferable(bais), null);
```

**44. Paste Text to ByteArrayOutputStream**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transferable = clipboard.getContents(null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write((byte[]) transferable.getTransferData(DataFlavor.stringFlavor));
```

**45. Copy Image from ByteArrayInputStream**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
BufferedImage image = ImageIO.read(new ByteArrayInputStream(bytes));
ImageTransferable imageTransferable = new ImageTransferable(image);
clipboard.setContents(imageTransferable, null);
```

**46. Paste Image to ByteArrayOutputStream**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transferable = clipboard.getContents(null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write((Image) transferable.getTransferData(DataFlavor.imageFlavor), "png", baos);
```

**47. Copy File from ByteArrayInputStream**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
FileTransferable fileTransferable = new FileTransferable(bais);
clipboard.setContents(fileTransferable, null);
```

**48. Paste File to ByteArrayOutputStream**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transferable = clipboard.getContents(null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write((byte[]) transferable.getTransferData(DataFlavor.bytesFlavor));
```

**49. Copy Text from Clipboard to System.out**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transferable = clipboard.getContents(null);
String text = (String) transferable.getTransferData(DataFlavor.stringFlavor);
System.out.println(text);
```

**50. Paste Text from System.in to Clipboard**

```java
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String text = reader.readLine();
StringSelection stringSelection = new StringSelection(text);
clipboard.setContents(stringSelection, null);
```
