尝试了一下,剪贴板的话 应该是下面这个:
java.awt.datatransfer.Clipboard clipboard=java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); //获得系统剪切板
以前用的时候都是用复制文字等String的,没有复制过图片Image。
查了查
,总结如下。
Java中使用java.awt.datatransfer.Clipboard类来描述剪切板,
系统剪切板通过Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();
写内容到剪贴板或者是从剪贴板读取内容的话,几个常用的方法用于读写剪切板中的文本数据以及图像数据
1. 往剪切板写文本数据(就是常说的String拉)
protected static void setClipboardText(Clipboard clip, String writeMe) {
Transferable tText = new StringSelection(writeMe);
clip.setContents(tText, null);
}
2. 从指定的剪切板中获取文本内容
protected static String getClipboardText(Clipboard clip) throws Exception{
// 获取剪切板中的内容
Transferable clipT = clip.getContents(null);
if (clipT != null) {
// 检查内容是否是文本类型
if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor))
return (String)clipT.getTransferData(DataFlavor.stringFlavor);
}
return null;
}
3. 写图像到剪切板
protected static void setClipboardImage(final Image image) {
Transferable trans = new Transferable(){
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(isDataFlavorSupported(flavor))
return image;
throw new UnsupportedFlavorException(flavor);
}
};
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null);
}
4. 从剪切板读取图像
public static Image getImageFromClipboard() throws Exception{
Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable cc = sysc.getContents(null);
if (cc == null)
return null;
else if(cc.isDataFlavorSupported(DataFlavor.imageFlavor))
return (Image)cc.getTransferData(DataFlavor.imageFlavor);
return null;
}
顺便付上简单的小例子,直接就可以运行的
package com.testCutAndPaste;
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 CutAndPaste 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 CutAndPaste() {
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(CutAndPaste.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 CutAndPaste(), 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);
}
}
通过API介绍,貌似还可以复制其他玩意,大家可以试试,先把资料贴出来。
字段摘要
static DataFlavor
|
imageFlavor
DataFlavor
表示 Java Image 类,其中: representationClass =
java.awt.Image mimeType = "image/x-java-image" |
static DataFlavor
|
javaFileListFlavor
要将文件列表传入 Java(及基础平台)或从中传出,需要使用此类型/子类型的 DataFlavor
和
java.util.List
的表示形式类。 |
static String
|
javaJVMLocalObjectMimeType
要将一个引用转换为不具有关联 MIME Content 类型的任意 Java 对象引用(跨越
Transferable
接口 WITHIN THE SAME JVM),需要使用具有此类型/子类型的
DataFlavor
,其中 representationClass
等于跨越
Transferable
传递的类/接口的类型。 |
static String
|
javaRemoteObjectMimeType
为了通过拖放 ACTION_LINK
操作将活动链接传递到 Remote 对象,应该使用 Mime
Content 类型的 application/x-java-remote-object,其中 DataFlavor
的表示形式类表示要传输的 Remote
接口的类型。 |
static String
|
javaSerializedObjectMimeType
MIME Content 类型的 application/x-java-serialized-object 表示已变得持久的
Java 对象的图形。 |
static DataFlavor
|
plainTextFlavor
已过时。
从 1.3 开始。使用
DataFlavor.getReaderForText(Transferable)
代替
Transferable.getTransferData(DataFlavor.plainTextFlavor)
。
|
static DataFlavor
|
stringFlavor
DataFlavor
表示 Java Unicode String 类,其中:
representationClass = java.lang.String mimeType =
"application/x-java-serialized-object" |
DataFlavor
flavor=java.awt.datatransfer.DataFlavor.stringFlavor//在数据拖放期间,或在文件系统中,当每
个实例显示在剪切板上时,它代表了数据格式的不透明概念.其实就是在系统内存中的东西是哪种类型.比如:文本,图片等.就象网页中的
contentType="text/html"等一样.这里的stringFlavor是字符类型.
if(transferable.isDataFlavorSupported(flavor))//如果是XX类型.这里是把flavor传递进去.
这里判断就是说:如果是文本类型.那么我们才取得:
可以这么取得:str=(String)transferable.getTransferData(flavor);
这样把剪切板的东西get出来.才强制成String 型不会出错.
其他的类型也是这么判断然后读取。
相关推荐
JAVA 程序 源代码 import java.applet.*;import java.awt.*
import java.awt.docx
整合了java.awt.*;java.awt.event.*;javax.swing.*包中的类,结合布局与事件处理....这是本人自己写的哦
java.awt.datatransfer java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.im java.awt.im.spi java.awt.image java.awt.image.renderable java.awt.print java.beans java.beans....
Java的AWT包.pdf 学习资料 复习资料 教学资源
awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android ...
import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.UnsupportedFlavorException; import java....
简单的记事本的JAVA程序,//导入awt包,event包 import java.awt.*
了解Java的不同包功能
import java.awt.AlphaComposite; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt....
java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中...
java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中...
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Image; import java.awt.Insets; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ComponentAdapter; ...
该程序显示了 MATLAB.Mouse 中 java.awt.Robot 类的用法,随机改变屏幕上的位置,并同时为您提供鼠标所在的 rgb 值。 为了运行 Matlab_JavaAWRobot_Project.m 你必须下载我提交的 getRobotClass.m 和 JavaRobotClass...
1. import java.awt.BorderLayout; 2. import java.awt.Component; 3. import java.awt.Dialog; 4. import java.awt.Dimension; 5. import java.awt.FlowLayout; 6. import java.awt.GridBagConstraints; 7. ...
import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event....
Robot键盘常量java.awt.event.KeyEvent。KeyEvent全部键盘按键映射整理KeyEvent枚举类
java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中...
解决java软件中Myeclipse 中的awt乱码问题