Java Tutorial/Development/Clipboard
Содержание
- 1 Clip Text
- 2 Copying data to system clipboard
- 3 Determining When an Item Is No Longer on the System Clipboard
- 4 Get string value from clipboard
- 5 Getting and Setting an Image on the System Clipboard
- 6 Getting data from the computer clipboard
- 7 implements ClipboardOwner
- 8 Placing text on the computer clipboard
- 9 Read Clipboard
- 10 Setting an image on the clipboard with a custom Transferable object to hold the image
- 11 Using the clipboard
- 12 Write a string to the system clipboard
Clip Text
<source lang="java">
import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import java.util.StringTokenizer; public class MainClass {
public static void main(String args[]) { // void copyToClipboard() { String toClipboard = "Hello from Java!"; StringSelection ss = new StringSelection(toClipboard); Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard(); clip.setContents(ss, ss); // Paste clip = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable contents = clip.getContents(new MainClass().getClass()); if (contents == null) System.out.println("The clipboard is empty."); else { if (contents.isDataFlavorSupported(DataFlavor.stringFlavor)) { try { String data = (String) contents.getTransferData(DataFlavor.stringFlavor); if (data == null) System.out.println("null"); else { StringTokenizer st = new StringTokenizer(data, "\n"); while (st.hasMoreElements()) System.out.println(st.nextToken()); } } catch (IOException ex) { System.out.println("IOException"); } catch (UnsupportedFlavorException ex) { System.out.println("UnsupportedFlavorException"); } } else System.out.println("Wrong flavor."); } }
}</source>
Copying data to system clipboard
<source lang="java">
import java.awt.Toolkit; import java.awt.datatransfer.StringSelection; public class Main {
public static void main(String[] argv) throws Exception { } // This method writes a string to the system clipboard. public static void copyToSystemClipboard(String str) { StringSelection ss = new StringSelection(str); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null); }
}</source>
Determining When an Item Is No Longer on the System Clipboard
<source lang="java">
import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; public class Main {
public static void main(String[] argv) throws Exception { ClipboardOwner owner = new MyClipboardOwner(); StringSelection ss = new StringSelection("A String"); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, owner); }
} class MyClipboardOwner implements ClipboardOwner {
public void lostOwnership(Clipboard clipboard, Transferable contents) { System.out.println("lost"); }
}</source>
Get string value from clipboard
<source lang="java">
import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; public class Main {
public static void main(String[] argv) { System.out.println(getClipboard()); } public static String getClipboard() { Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); try { if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) { String text = (String) t.getTransferData(DataFlavor.stringFlavor); return text.trim(); } } catch (Exception e) { } return ""; }
}</source>
Getting and Setting an Image on the System Clipboard
<source lang="java">
import java.awt.Image; import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; public class Main {
public static void main(String[] argv) throws Exception { Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); if (t != null && t.isDataFlavorSupported(DataFlavor.imageFlavor)) { Image img = (Image) t.getTransferData(DataFlavor.imageFlavor); } }
}</source>
Getting data from the computer clipboard
<source lang="java">
import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; public class Main {
public static void main(String[] args) throws Exception { Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable tran = clipboard.getContents(null); if (tran != null && tran.isDataFlavorSupported(DataFlavor.stringFlavor)) { String clipboardContent = (String) tran.getTransferData(DataFlavor.stringFlavor); System.out.println(clipboardContent); } }
}</source>
implements ClipboardOwner
<source lang="java">
import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; public class Main {
public static void main(String[] argv) throws Exception { ClipboardOwner owner = new MyClipboardOwner(); StringSelection ss = new StringSelection("A String"); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, owner); }
} class MyClipboardOwner implements ClipboardOwner {
public void lostOwnership(Clipboard clipboard, Transferable contents) { System.out.println("lost"); }
}</source>
Placing text on the computer clipboard
<source lang="java">
import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; public class Main {
public static void main(String[] args) { Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(new StringSelection("string"), null); }
}</source>
Read Clipboard
<source lang="java">
import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import javax.swing.JFrame; public class MainClass extends JFrame {
public static void main(String args[]) { Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard(); System.out.println("Object Name: " + clip.getName()); Transferable contents = clip.getContents(new MainClass().getClass()); if (contents == null) System.out.println("\n\nThe clipboard is empty."); else { DataFlavor flavors[] = contents.getTransferDataFlavors(); for (int i = 0; i < flavors.length; ++i) { System.out.println("\n\n Name: " + flavors[i].getHumanPresentableName()); System.out.println("\n MIME Type: " + flavors[i].getMimeType()); Class cl = flavors[i].getRepresentationClass(); if (cl == null) System.out.println("null"); else System.out.println(cl.getName()); } } }
}</source>
Setting an image on the clipboard with a custom Transferable object to hold the image
<source lang="java">
import java.awt.Image; import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import javax.swing.ImageIcon; public class Main {
public static void main(String[] argv) throws Exception { ImageSelection imgSel = new ImageSelection(new ImageIcon("a.png").getImage()); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(imgSel, null); }
} class ImageSelection implements Transferable {
private Image image; public ImageSelection(Image image) { this.image = image; } public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] { DataFlavor.imageFlavor }; } public boolean isDataFlavorSupported(DataFlavor flavor) { return DataFlavor.imageFlavor.equals(flavor); } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (!DataFlavor.imageFlavor.equals(flavor)) { throw new UnsupportedFlavorException(flavor); } return image; }
}</source>
Using the clipboard
<source lang="java">
// This example is from the book _Java AWT Reference_ by John Zukowski. // Written by John Zukowski. Copyright (c) 1997 O"Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or import java.awt.Button; import java.awt.Event; import java.awt.Frame; import java.awt.Panel; import java.awt.TextArea; import java.awt.TextField; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; public class ClipMe extends Frame {
TextField tf; TextArea ta; Button copy, paste; Clipboard clipboard = null; ClipMe() { super("Clipping Example"); add(tf = new TextField("Welcome"), "North"); add(ta = new TextArea(), "Center"); ta.setEditable(false); Panel p = new Panel(); p.add(copy = new Button("Copy")); p.add(paste = new Button("Paste")); add(p, "South"); setSize(250, 250); } public static void main(String args[]) { new ClipMe().show(); } public boolean handleEvent(Event e) { if (e.id == Event.WINDOW_DESTROY) { System.exit(0); return true; // never gets here } return super.handleEvent(e); } public boolean action(Event e, Object o) { if (clipboard == null) clipboard = getToolkit().getSystemClipboard(); if ((e.target == tf) || (e.target == copy)) { StringSelection data; data = new StringSelection(tf.getText()); clipboard.setContents(data, data); } else if (e.target == paste) { Transferable clipData = clipboard.getContents(this); String s; try { s = (String) (clipData.getTransferData(DataFlavor.stringFlavor)); } catch (Exception ee) { s = ee.toString(); } ta.setText(s); } return true; }
}</source>
Write a string to the system clipboard
<source lang="java">
import java.awt.Toolkit; import java.awt.datatransfer.StringSelection; public class Main {
public static void main(String[] argv) throws Exception { StringSelection ss = new StringSelection("str"); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null); }
}</source>