尝试了一下,剪贴板的话 应该是下面这个:
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 型不会出错.
其他的类型也是这么判断然后读取。
相关推荐
import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.UnsupportedFlavorException; import java....
Java提供了java.awt.Toolkit和java.awt.datatransfer.Clipboard两个类来实现对剪贴板的访问和管理。在"Java 利用剪贴板交换程序间数据"这个主题中,我们将深入探讨如何使用Java来实现这一功能。 首先,`java.awt....
4. **java.awt.datatransfer**:提供在应用程序之间和内部传输数据的接口和类,如Clipboard用于复制和粘贴操作。 5. **java.awt.dnd**:拖放(Drag and Drop)功能的支持,允许用户通过直观的方式在GUI组件间移动...
1. **导入必要的包**:首先,我们需要导入`java.awt.Toolkit`、`java.awt.datatransfer.Clipboard`和`java.awt.datatransfer.StringSelection`。`Toolkit`类提供了访问系统工具箱的服务,`Clipboard`类用于表示剪贴...
`java.awt.datatransfer` 包含了数据传输相关的接口和类,例如 `Clipboard` 和 `Transferable`,用于在不同应用程序或应用内部转移数据,如复制和粘贴功能。 `java.awt.dnd`(Drag and Drop)包提供了实现拖放操作...
org.eclipse.swt.dnd.Clipboard.class org.eclipse.swt.dnd.DND.class org.eclipse.swt.dnd.DNDEvent.class org.eclipse.swt.dnd.DNDListener.class org.eclipse.swt.dnd.DragSource.class org.eclipse.swt.dnd....
4. **Java.awt.datatransfer**: 支持在不同应用程序间或者应用程序内部进行数据交换,如剪贴板操作,包含了DataFlavor和Clipboard等类。 5. **Java.awt.dnd**: Drag and Drop功能的实现,提供了DragGestureListener...
首先,Java提供了`java.awt.Toolkit`和`java.awt.datatransfer.Clipboard`类来访问和操作剪贴板内容。`Toolkit.getDefaultToolkit()`方法可以获取到系统默认的工具包,而`Clipboard`对象则可以从中获取或设置剪贴板...
在JRuby中,`Clipboard`库可以利用Java的`java.awt.Toolkit`和`java.awt.datatransfer`包来操作剪贴板: ```ruby require 'java' import 'java.awt.Toolkit' import 'java.awt.datatransfer.StringSelection' ...
首先,Java提供了`java.awt.Toolkit`类和`java.awt.datatransfer`包来处理剪贴板的操作。`Toolkit.getDefaultToolkit()`可以获取系统默认的工具包,而`Clipboard`接口则是剪贴板操作的主要接口,可以通过`Toolkit....
4. `java.awt.datatransfer`:这个包用于在应用程序之间或应用程序内部传输数据,如剪贴板操作。`Clipboard`类提供了数据复制和粘贴的功能,而`Transferable`接口定义了数据传输的格式。 5. `java.awt.dnd`:拖放...
`java.awt.datatransfer`包则包含了数据传输的接口和类,如`Clipboard`用于数据复制和粘贴,`DataFlavor`定义了数据的类型。 在`java.awt.dnd`(拖放)包中,定义了拖放操作的实现,使得用户可以方便地在GUI组件...
import java.awt.datatransfer.Clipboard; import javax.swing.JFrame; ``` - **ActionListener**: 用于处理事件监听。 - **ActionEvent**: 表示由组件触发的动作事件。 - **WindowAdapter**: 为窗口提供事件监听...
import java.awt.datatransfer.StringSelection; public class ClipboardExample { public static void main(String[] args) { Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); // ...
import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; class MyClipboard { private Clipboard cb; public MyClipboard() { cb = ...
在Java中,`java.awt.datatransfer.Clipboard`接口代表了系统剪贴板,它允许应用程序存储和检索数据。为了使得JTable与Excel之间的数据传输可行,我们需要创建一个适配器类,这个适配器能够处理Excel兼容的数据格式...
import java.awt.datatransfer.*; public class ClipboardUtil { public static void copyToClipboard(BufferedImage image) { MemoryImageSource mis = new MemoryImageSource(image.getWidth(), image....
首先,我们需要了解Java中的`java.awt.datatransfer`和`javax.swing`包,这两个包提供了与剪贴板交互所需的类和接口。在`java.awt.datatransfer`中,`Clipboard`接口代表了系统剪贴板,而`Transferable`接口定义了...
12. **java.awt.datatransfer** 包:处理数据传输,例如通过剪贴板进行数据交换,包含 `Clipboard`、`DataFlavor` 和 `Transferable`。 13. **java.awt.event** 包:提供事件处理类,如键盘、鼠标事件监听器,与 ...
##### 3.4 `java.awt.datatransfer` - **用途**:提供在应用程序之间或应用程序内部传输数据的接口和类。 - **关键类**:`Clipboard`, `Transferable`, `DataFlavor` ##### 3.5 `java.awt.dnd` - **用途**:实现了...