当前位置: 首页 > 面试题库 >

将BufferedImage复制到剪贴板

赫连明诚
2023-03-14
问题内容

如何将BufferedImage存储到系统剪贴板中?


问题答案:

这是从这里获得的工作代码,已成功测试

package org.life.java.so.questions;

/**
 * @author Jigar
 */
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.image.*;
import java.io.*;

public class CopyImagetoClipBoard implements ClipboardOwner {
    public CopyImagetoClipBoard() {
        try {
            Robot robot = new Robot();
            Dimension screenSize  = Toolkit.getDefaultToolkit().getScreenSize();
            Rectangle screen = new Rectangle( screenSize );
            BufferedImage i = robot.createScreenCapture( screen );
            TransferableImage trans = new TransferableImage( i );
            Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
            c.setContents( trans, this );
        }
        catch ( AWTException x ) {
            x.printStackTrace();
            System.exit( 1 );
        }
    }

    public static void main( String[] arg ) {
        CopyImagetoClipBoard ci = new CopyImagetoClipBoard();
    }

    public void lostOwnership( Clipboard clip, Transferable trans ) {
        System.out.println( "Lost Clipboard Ownership" );
    }

    private class TransferableImage implements Transferable {

        Image i;

        public TransferableImage( Image i ) {
            this.i = i;
        }

        public Object getTransferData( DataFlavor flavor )
        throws UnsupportedFlavorException, IOException {
            if ( flavor.equals( DataFlavor.imageFlavor ) && i != null ) {
                return i;
            }
            else {
                throw new UnsupportedFlavorException( flavor );
            }
        }

        public DataFlavor[] getTransferDataFlavors() {
            DataFlavor[] flavors = new DataFlavor[ 1 ];
            flavors[ 0 ] = DataFlavor.imageFlavor;
            return flavors;
        }

        public boolean isDataFlavorSupported( DataFlavor flavor ) {
            DataFlavor[] flavors = getTransferDataFlavors();
            for ( int i = 0; i < flavors.length; i++ ) {
                if ( flavor.equals( flavors[ i ] ) ) {
                    return true;
                }
            }

            return false;
        }
    }
}


 类似资料:
  • 问题内容: 首先,关于SO将图像复制到python中的剪贴板的问题导致答案用PIL和win32clipboard将图像写入python中的Windows剪贴板?,这仅对Python 2.x有用。-我尝试过,但是没有用。我克服了一个问题:Python 3.0中没有StringIO和cStringIO模块 ,但是碰到了另一个: 因此,对于Python 3再次提出相同的问题-如何在Python 3中将图

  • 2.如果用户在excel表格中复制,则应易于复制,即使用户试图在记事本中复制,也应以表格格式打印。 3.添加一些元数据到剪贴板,以确定pojo何时我们将再次导入表。 为了将pojo列表转换为表格格式,我使用了jtable,但无法将所有jtable内容导出到剪贴板。 --pojo.java 当我试图将字符串值复制到剪贴板时,它是工作的,但当我试图复制pojo时,它是不工作的。

  • 问题内容: 我已经实现了回收卡视图,并想使用按钮单击方法来复制cardView的内容。cardview中有两个文本,我只想复制内容,不同的卡片不同。我怎样才能做到这一点?这是我的Cardview适配器。 v.content.getText()。toString(),无法解析内容。 问题答案: 尝试以下

  • 这是我目前拥有的:

  • 将一个字符串复制到剪贴板。 仅作为用户操作的结果(即,在 click 事件侦听器中)。 创建一个新的 <textarea> 元素,用提供的数据填充它,并将其添加到 HTML 文档中。 使用 Selection.getRangeAt() 来存储选择的范围(如果有的话)。 使用 document.execCommand('copy') 复制到剪贴板。 从HTML文档中删除 <textarea> 元素。

  • 问题是,从vim到剪贴板的复制/粘贴停止工作。我不知道为什么。。。 在中,我也没有看到和缓冲区... 这是我的。vimrc,如果需要的话。 有什么建议吗? 谢谢