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
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.");
}
}
}
Copying data to system clipboard
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);
}
}
Determining When an Item Is No Longer on the System Clipboard
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");
}
}
Get string value from clipboard
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 "";
}
}
Getting and Setting an Image on the System Clipboard
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);
}
}
}
Getting data from the computer clipboard
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);
}
}
}
implements ClipboardOwner
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");
}
}
Placing text on the computer clipboard
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);
}
}
Read Clipboard
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());
}
}
}
}
Setting an image on the clipboard with a custom Transferable object to hold the image
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;
}
}
Using the clipboard
// 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;
}
}
Write a string to the system clipboard
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);
}
}