datatransfer
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.
How can I disable copying text, In JAVA ???