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:
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | 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 ???