读书人

如何把截图保存到粘贴板

发布时间: 2011-12-06 23:05:08 作者: rapoo

怎么把截图保存到粘贴板
我毕业设计做一个游戏,大部分完成了,有一个附加功能我不会,就是把绘图区(下面的board,一个继承了JPanel的内部类)截图,然后保存到粘贴板。我写好了截图了,粘贴板就不知道怎么处理了。

网上有这样的大概的方法介绍,但我不会应用到我这里,人家写的太复杂了。希望有人能告诉我,如果能把代码填完更好,万分感谢。


JMenuItem copyimageItem=new JMenuItem( "复制为图片 "); //菜单项
copyimageItem.addActionListener(new ActionListener(){ //菜单事件

public void actionPerformed(ActionEvent e){
Toolkit toolKit=Toolkit.getDefaultToolkit();
Clipboard clipBoard=toolKit.getSystemClipboard();
Point p=board.getLocationOnScreen(); //board是一个画图的JPanel.
Dimension d=board.getSize();
Rectangle re= new Rectangle(p,d); //board 的屏幕的绝对位置

try {
BufferedImage buffereImage = (new Robot()) .createScreenCapture(re); //截图

// 把截图保存到粘贴板 ,这里我不会了。



}
catch (AWTException ex) {
}




}
});

[解决办法]
需要先写一个实现Transferable接口的ImageSelection,如下:
import java.awt.*;
import java.awt.datatransfer.*;

public class ImageSelection implements Transferable
{
private Image img;

public ImageSelection(Image img)
{
this.img = img;
}

public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
if (flavor.equals(DataFlavor.imageFlavor)) {
return img;
}
else {
throw new UnsupportedFlavorException(flavor);
}
}

public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[]{DataFlavor.imageFlavor};
}

public boolean isDataFlavorSupported(DataFlavor flavor) {
return flavor.equals(DataFlavor.imageFlavor);
}
}
再在你上面的代码中加入:
Clipboard clipboard=Toolkit.getDefaultToolkit().getSystemClipboard();
ImageSelection selection = new ImageSelection(bi);
clipboard.setContents(selection, null);

读书人网 >J2SE开发

热点推荐