Home » Desktop Java » awt » datatransfer » Getting and setting text on the system clipboard

About Byron Kiourtzoglou

Byron Kiourtzoglou
Byron is a master software engineer working in the IT and Telecom domains. He is an applications developer in a wide variety of applications/services. He is currently acting as the team leader and technical architect for a proprietary service creation and integration platform for both the IT and Telecom industries in addition to a in-house big data real-time analytics solution. He is always fascinated by SOA, middleware services and mobile development. Byron is co-founder and Executive Editor at Java Code Geeks.

Getting and setting text on the system clipboard

With this example we are going to see how to get and set the text on the system clipboard. This is a very common feature that we all use every day when working on a computer. The most common use of this is when we perform text copy/paste operations. Using this example you can embed this operations in you own app, making it possible for the user to copy the text he wants in the clipboard and use it as he wishes.

Basically to set and get the text on the system clipboard, one should perform the following steps:

  • Create a new ActionListener instance.
  • Override actionPerformed to customize the handling of a specific event.
  • Use Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null) call to get the contents of the System clipboard.
  • Use Toolkit.getDefaultToolkit().getSystemClipboard().setContents(StringSelection str, null) to set the contents of the System clipboard.

Let’s take a look at the code snippets that follow:

package com.javacodegeeks.snippets.desktop;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

public class ClipdoardUsage {

  public static void main(String[] args) {

    // Create a frame
    Frame frame = new Frame("Example Frame");

    /*

* Create a container with a flow layout, which arranges its children 

* horizontally and center aligned.

* A container can also be created with a specific layout using

* Panel(LayoutManager) constructor, e.g.

* Panel(new FlowLayout(FlowLayout.RIGHT)) for right alignment

*/
    Panel panel = new Panel();

    // Add a text area in the center of the frame
    final TextArea textArea = new TextArea("This is a sample text...");
    frame.add(textArea, BorderLayout.CENTER);

    // Add several buttons to the container
    Button copyToClipboardButton = new Button("Copy to clipboard");
    Button pasteFromClipboardButton = new Button("Paste from clipboard");
    panel.add(copyToClipboardButton);
    panel.add(pasteFromClipboardButton);

    // Add action listener to copyToClipboardButton for copying textArea content to clipboard
    copyToClipboardButton.addActionListener(new ActionListener() {

  @Override

  public void actionPerformed(ActionEvent evt) {

setStringToClipboard(textArea.getText());

  }
    });

    // Add action listener to pasteFromClipboardButton for pasting clipboard content to textArea
    pasteFromClipboardButton.addActionListener(new ActionListener() {

  @Override

  public void actionPerformed(ActionEvent evt) {

textArea.setText(getStringFromClipboard());

  }
    });

    // Add the container to the bottom of the frame
    frame.add(panel, BorderLayout.SOUTH);

    // Display the frame
    int frameWidth = 300;
    int frameHeight = 300;
    frame.setSize(frameWidth, frameHeight);

    frame.setVisible(true);

  }

  // If a string is on the system clipboard, this method returns it; otherwise it returns null.
  public static String getStringFromClipboard() {
    Transferable transferable = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);

    try {

  if (transferable != null && transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) {

String text = (String) transferable.getTransferData(DataFlavor.stringFlavor);

return text;

  }
    } catch (UnsupportedFlavorException e) {

  System.out.println("Clipboard content flavor is not supported " + e.getMessage());
    } catch (IOException e) {

  System.out.println("Clipboard content could not be retrieved " + e.getMessage());
    }
    return null;
  }

  // This method writes a string to the clipboard.
  public static void setStringToClipboard(String stringContent) {
    StringSelection stringSelection = new StringSelection(stringContent);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
  }

}

 
This was an example on getting and setting text on the system clipboard in a Java Desktop Application.

(+1 rating, 1 votes)
1 Comment Views Tweet it!

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!

 

1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design

 

and many more ....

 

Receive Java & Developer job alerts in your Area

 

1
Leave a Reply

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Deepali Walia Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
Deepali Walia
Guest

How can I disable copying text, In JAVA ???