// : 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);
}
} ///:~