我如何从系统剪贴板粘贴到java中的任意窗口?

时间:2011-07-08 14:13:28

标签: java system clipboard paste

我正在制作一个聊天程序,用于粘贴用户放置的文本一定次数,这实际上会使受害者屏幕上出现一堆消息。我已经在剪贴板上复制了文本,但我无法弄清楚如何在不使用我不想做的机器人类的情况下将其粘贴回去,因为我无法弄清楚如何按下命令键mac所以它不会是多平台的,因为如果有人在中间按键,它可以做一些完全不同的事情。如果有人可以帮我使用剪贴板类粘贴那将是很棒的。我已经看了十几个不同的网站,但无法弄明白。提前致谢! :)

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

以下说明如何将文本添加到剪贴板以及如何从剪贴板中获取文本。

import java.awt.*;
import java.awt.datatransfer.*;
import java.io.*;

class ClipboardTest
{
    public static void main(String[] args)
        throws UnsupportedFlavorException, IOException
    {
        Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
        StringSelection testData;

        //  Add some test data

        if (args.length > 0)
            testData = new StringSelection( args[0] );
        else
            testData = new StringSelection( "Test Data" );

        c.setContents(testData, testData);

        //  Get clipboard contents, as a String

        Transferable t = c.getContents( null );

        if ( t.isDataFlavorSupported(DataFlavor.stringFlavor) )
        {
            Object o = t.getTransferData( DataFlavor.stringFlavor );
            String data = (String)t.getTransferData( DataFlavor.stringFlavor );
            System.out.println( "Clipboard contents: " + data );
        }

        System.exit(0);
    }
}

获得文本后,您可以通过执行以下操作将其添加到文本组件中:

Document doc = textComponent.getDocument();
doc.insertString(....);