java.awt.datatransfer
package that are relevant to copy and paste.
The getSystemClipboard() method of the java.awt.Toolkit class returns a Clipboard object which represents
the system clipboard:
 public abstract Clipboard getSystemClipboard()
The java.lang.SecurityManager class includes a 
 checkSystemClipboardAccess() method that determines whether
 or not this program is allowed to access the system clipboard.
 The method is void but throws a SecurityException if access is not allowed. 
 public void checkSystemClipboardAccess()
 The concern is that the clipboard may contain private data
 which the user would not want revealed to the server.  As a general
 rule, applets loaded from web servers will not be allowed 
 to access the system clipboard. This does not, however,
 apply to private clipboards you create. For example, 
  try {
    SecurityManager sm = SecurityManager.getSecurityManager();
    if (sm != null) sm.checkSystemClipboardAccess();
    Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
    //... handle clipboard
  }
  catch (SecurityException e) {
    System.err.println("Cannot access the system clipboard");
  }
The java.awt.TextComponent class, which both 
TextArea and TextField extend, 
has a getSelectedText() method that returns the 
current value of the selection as a String:
public synchronized String getSelectedText()
You'll often use this method to decide what to copy or cut. Several other
TextComponent methods are also useful for manipulating the selection:
 public synchronized int getSelectionStart()
 public synchronized void setSelectionStart(int selectionStart)
 public synchronized void setSelectionEnd(int selectionEnd)
 public synchronized void select(int selectionStart, int selectionEnd)
 public synchronized void selectAll()
 public void setCaretPosition(int position)
 public int getCaretPosition()
The TextArea class (but not the TextField class)
also has insert() and replaceRange() methods you can use for pasting:
 public synchronized void insert(String s, int pos)
 public synchronized void replaceRange(String s, int start, int end)
What's the difference between these two methods? When would you use insert() and when would you use replaceRange()?