DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Snippets has posted 5883 posts at DZone. View Full User Profile

Java - CUT&PASTE

10.26.2006
| 7944 views |
  • submit to reddit
        // Cut&Paste Method
package system.clipboard;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;	 

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class ClipBoard extends JFrame implements ClipboardOwner, ActionListener
{
	private static final long serialVersionUID = 1L;
	
	JTextArea srcText, dstText;
	JButton copyButton, pasteButton;
	Clipboard clipboard = getToolkit().getSystemClipboard();

	public ClipBoard()
	{
		super("Clipboard Test");
		
		GridBagLayout gridbag = new GridBagLayout();
		GridBagConstraints c = new GridBagConstraints();
		
		setLayout(gridbag);
		
		srcText = new JTextArea(8, 32);
		c.gridwidth = 2;
		c.anchor = GridBagConstraints.CENTER;
		gridbag.setConstraints(srcText, c);
		add(srcText);

		copyButton = new JButton("Copy Above");
		copyButton.setActionCommand("copy");
		copyButton.addActionListener(this);
		c.gridy = 1;
		c.gridwidth = 1;
		gridbag.setConstraints(copyButton, c);
		add(copyButton);
		
		pasteButton = new JButton("Paste Below");
		pasteButton.setActionCommand("paste");
		pasteButton.addActionListener(this);
		pasteButton.setEnabled(false);
		c.gridx = 1;
		gridbag.setConstraints(pasteButton, c);
		add(pasteButton);
		
		dstText = new JTextArea(8, 32);
		c.gridx = 0;
		c.gridy = 2;
		c.gridwidth = 2;
		gridbag.setConstraints(dstText, c);
		add(dstText);
		
		pack();
	}
	
	public void actionPerformed(ActionEvent evt)
	{
		String cmd = evt.getActionCommand();
		
		if(cmd.equals("copy")) 
		{
			// Implement Copy operation
			String srcData = srcText.getText();
			
			if(srcData != null)
			{
				StringSelection contents = new StringSelection(srcData);
				clipboard.setContents(contents, this);
				pasteButton.setEnabled(true);
			}
		}
		else if(cmd.equals("paste"))
		{
			// Implement Paste operation
			Transferable content = clipboard.getContents(this);
			if(content != null) 
			{
				try
				{
					String dstData = (String) content.getTransferData(DataFlavor.stringFlavor);
					dstText.append(dstData);
				}
				catch(Exception e)
				{
					System.out.println("Couldn't get contents in format: " + DataFlavor.stringFlavor.getHumanPresentableName());
				}
			}
		}
	}

	public void lostOwnership(Clipboard clipboard, Transferable contents)
	{
		System.out.println("Clipboard contents replaced");
	}
	
	public static void main(String[] args) 
	{
		ClipBoard test = new ClipBoard();
		test.setVisible(true);
	}
}