The Java Program: Main.java
1 import java.awt.Toolkit;
2 import java.awt.Event;
3 import java.awt.event.*;
4 import javax.swing.*;
5
6 import java.awt.datatransfer.Clipboard;
7 import java.awt.datatransfer.DataFlavor;
8 import java.awt.datatransfer.Transferable;
9 import java.awt.datatransfer.StringSelection;
10 import java.awt.datatransfer.UnsupportedFlavorException;
11
12
13 import java.util.Date;
14 import java.util.Arrays;
15 import java.io.IOException;
16
17 public class Main extends JFrame {
18
19 public static void main (String[] args) {
20 final JFrame frame = new Main ();
21 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
22 frame.pack();
23 frame.setVisible(true);
24 }
25
26 private Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
27
28 public Main() {
29 final JTextArea ta = new JTextArea(10, 40);
30 getContentPane().add(new JScrollPane(ta));
31
32 final JMenuBar bar = new JMenuBar();
33 JMenu menu = new JMenu ("Edit");
34 menu.setMnemonic ('E');
35 JMenuItem cut = new JMenuItem ("Cut");
36 cut.setMnemonic ('T');
37 cut.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.CTRL_MASK));
38
39 JMenuItem copy = new JMenuItem ("Copy");
40 copy.setMnemonic('C');
41 copy.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_C, Event.CTRL_MASK));
42
43
44
45
46 class BL implements ActionListener {
47 public void actionPerformed (ActionEvent ev) {
48 final StringSelection ss = new StringSelection (new Date (). toString());
49 cb.setContents (ss, ss);
50 ta.append ("Adding string to clipboard");
51 ta.append ("\n");
52 ta.append (" Clipboard owner: " + cb.getName());
53 ta.append ("\n");
54 ta.append (" String contents: " + ss);
55 ta.append ("\n\n");
56 }
57 }
58 copy.addActionListener (new BL ());
59
60
61
62
63 JMenuItem paste = new JMenuItem ("Paste");
64 paste.setMnemonic('P');
65 paste.setAccelerator (KeyStroke.getKeyStroke(KeyEvent.VK_V, Event.CTRL_MASK));
66 class AL implements ActionListener {
67 public void actionPerformed (ActionEvent ev) {
68 final Transferable t = cb.getContents(this);
69 if (t==null) {
70 ta.append ("Clipboard is empty!\n");
71 return;
72 }
73 ta.append ("Clipboard owner: " + cb.getName());
74 ta.append ("\n");
75 final DataFlavor [] flavors = t.getTransferDataFlavors();
76 if (flavors==null) {
77 ta.append ("No flavors!\n");
78 return;
79 }
80 for (int i=0; i<flavors.length; i++) {
81 ta.append ("("+i+") DataFlavor: " + flavors[i].getHumanPresentableName());
82 ta.append ("\n");
83 ta.append (" MIME type: " + flavors[i].getMimeType());
84 ta.append ("\n");
85 ta.append (" Java class: " + flavors[i].getRepresentationClass());
86 ta.append ("\n");
87 try {
88 ta.append (" Contents: " + t.getTransferData(flavors[i]).toString());
89 ta.append ("\n");
90 } catch (UnsupportedFlavorException e) {
91 ta.append ("Not supported\n");
92 } catch (IOException e) {
93 ta.append ("IOException\n");
94 }
95 }
96 ta.append ("\n");
97 }
98 }
99 paste.addActionListener (new AL ());
100
101 menu.add (cut);
102 menu.add (copy);
103 menu.add (paste);
104 bar.add (menu);
105 setJMenuBar (bar);
106 }
107 }