Как бы я вставил из системного буфера обмена в произвольное окно в Java? - PullRequest
1 голос
/ 08 июля 2011

Я создаю программу чата, которая вставляет текст, который пользователь вводит определенное количество раз, что, по сути, заполняет экран жертв кучей сообщений.Я уже скопировал текст в буфер обмена, но я не могу понять, как вставить его обратно, не используя класс робота, чего я не хочу делать, потому что я не могу понять, как нажать командную клавишу дляMac, поэтому он не будет мультиплатформенным, и потому, что если кто-то нажмет клавишу посередине, он может сделать что-то совершенно другое.Если кто-нибудь может помочь мне использовать класс Clipboard для вставки, это было бы здорово.Я искал это на миллиарде разных сайтов, но не могу понять.Заранее спасибо!:)

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Ниже показано, как добавить текст в буфер обмена и как получить текст из буфера обмена.

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(....);
1 голос
/ 08 июля 2011
...