如何在 Java 中剪切复制粘贴

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20174462/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 23:44:10  来源:igfitidea点击:

How to do Cut Copy Paste in Java

javaclipboard

提问by Rohan

I want to make a java program that can access the clipboard for performing functions like cut,copy and paste. It would be much helpful if someone would kindly help me with a sample code... Thank You!

我想制作一个可以访问剪贴板以执行剪切、复制和粘贴等功能的 Java 程序。如果有人愿意帮助我提供示例代码,那将会很有帮助...谢谢!

回答by Andrey Chaschev

Here is a working example of string copying for JDK 7+ (JavaFX 2):

以下是 JDK 7+ (JavaFX 2) 的字符串复制示例:

public String pasteFromClipboard() {
    return Clipboard.getSystemClipboard().getString();
}

public void copyToClipboard(String text) {
    HashMap<DataFormat, Object> map = new HashMap<DataFormat, Object>();
    map.put(DataFormat.PLAIN_TEXT, text);
    Clipboard.getSystemClipboard().setContent(map);
}

JavaDoc for Clipboard.

剪贴板的 JavaDoc

回答by Patato

     /**
     * get string from Clipboard
     */
    public static String getSysClipboardText() {
        String ret = "";
        Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();

        Transferable clipTf = sysClip.getContents(null);

        if (clipTf != null) {

            if (clipTf.isDataFlavorSupported(DataFlavor.stringFlavor)) {
                try {
                    ret = (String) clipTf
                            .getTransferData(DataFlavor.stringFlavor);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

        return ret;
    }

    /**
     * put string into Clipboard
     */
    public static void setSysClipboardText(String writeMe) {
        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
        Transferable tText = new StringSelection(writeMe);
        clip.setContents(tText, null);
    }

    /**
     * get image from Clipboard
     */
    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;
    }

    /**
     * put iamge into Clipboard
     */
    public 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);
    }

and if you want to handle files or folders you may try

如果你想处理文件或文件夹,你可以尝试

 copyFile(srcPath, destDir, true/**overwriteExistFile*/);    

 copyDirectory(srcPath, destDir, true/**overwriteExistDir*/);