|  
 // : c14:CutAndPaste.java
 // Using the clipboard.
 // From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
 // www.BruceEckel.com. See copyright notice in CopyRight.txt.
 
 import java.awt.datatransfer.Clipboard;
 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.JFrame;
 import javax.swing.JMenu;
 import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;
 import javax.swing.JTextArea;
 
 public class Main extends JFrame {
 private JMenuBar mb = new JMenuBar();
 
 private JMenu edit = new JMenu("Edit");
 
 private JMenuItem cut = new JMenuItem("Cut"), copy = new JMenuItem("Copy"),
 paste = new JMenuItem("Paste");
 
 private JTextArea text = new JTextArea(20, 20);
 
 private Clipboard clipbd = getToolkit().getSystemClipboard();
 
 public Main() {
 cut.addActionListener(new CutL());
 copy.addActionListener(new CopyL());
 paste.addActionListener(new PasteL());
 edit.add(cut);
 edit.add(copy);
 edit.add(paste);
 mb.add(edit);
 setJMenuBar(mb);
 getContentPane().add(text);
 }
 
 class CopyL implements ActionListener {
 public void actionPerformed(ActionEvent e) {
 String selection = text.getSelectedText();
 if (selection == null)
 return;
 StringSelection clipString = new StringSelection(selection);
 clipbd.setContents(clipString, clipString);
 }
 }
 
 class CutL implements ActionListener {
 public void actionPerformed(ActionEvent e) {
 String selection = text.getSelectedText();
 if (selection == null)
 return;
 StringSelection clipString = new StringSelection(selection);
 clipbd.setContents(clipString, clipString);
 text.replaceRange("", text.getSelectionStart(), text
 .getSelectionEnd());
 }
 }
 
 class PasteL implements ActionListener {
 public void actionPerformed(ActionEvent e) {
 Transferable clipData = clipbd.getContents(Main.this);
 try {
 String clipString = (String) clipData
 .getTransferData(DataFlavor.stringFlavor);
 text.replaceRange(clipString, text.getSelectionStart(), text
 .getSelectionEnd());
 } catch (Exception ex) {
 System.err.println("Not String flavor");
 }
 }
 }
 
 public static void main(String[] args) {
 run(new Main(), 300, 200);
 }
 
 public static void run(JFrame frame, int width, int height) {
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setSize(width, height);
 frame.setVisible(true);
 }
 } ///:~
 
 
 
 |