Копирование текста в буфер обмена с использованием Java - программирование
Подтвердить что ты не робот

Копирование текста в буфер обмена с использованием Java

Я хочу скопировать текст из ячейки JTable в буфер обмена, сделав его доступным для вставки в другие программы, такие как Microsoft Word. У меня есть текст из JTable, но я не уверен, как его скопировать в буфер обмена.

4b9b3361

Ответ 1

Это работает для меня и довольно просто:

Импортируйте эти:

import java.awt.datatransfer.StringSelection;
import java.awt.Toolkit;

А затем поместите этот фрагмент кода туда, где вы хотите изменить буфер обмена:

String myString = "This text will be copied into clipboard";
StringSelection stringSelection = new StringSelection(myString);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, null);

Ответ 2

Следующий класс позволяет скопировать/вставить строку в/из буфера обмена.

import java.awt.AWTException;
import java.awt.HeadlessException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.KeyEvent;
import java.io.IOException;

public class SystemClipboard
{
    public static void copy(String text)
    {
        Clipboard clipboard = getSystemClipboard();

        clipboard.setContents(new StringSelection(text), null);
    }

    public static void paste() throws AWTException
    {
        Robot robot = new Robot();

        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyRelease(KeyEvent.VK_V);
    }

    public static String get() throws Exception
    {
        Clipboard systemClipboard = getSystemClipboard();
        DataFlavor dataFlavor = DataFlavor.stringFlavor;

        if (systemClipboard.isDataFlavorAvailable(dataFlavor))
        {
            Object text = systemClipboard.getData(dataFlavor);
            return (String) text;
        }

        return null;
    }

    private static Clipboard getSystemClipboard()
    {
        Toolkit defaultToolkit = Toolkit.getDefaultToolkit();
        Clipboard systemClipboard = defaultToolkit.getSystemClipboard();

        return systemClipboard;
    }
}

Ответ 3

Это принятый ответ, написанный декоративно:

Toolkit.getDefaultToolkit()
        .getSystemClipboard()
        .setContents(
                new StringSelection(txtMySQLScript.getText()),
                null
        );

Ответ 4

Я нашел лучший способ сделать это, чтобы вы могли получить информацию из txtbox или создать что-то в этом текстовом поле и иметь возможность нажать кнопку, чтобы сделать это. Вот код для копирования в рабочий буфер (2017/2018)!

import java.awt.datatransfer.*;
import java.awt.Toolkit;

private void /* Action performed when the copy to clipboard button is clicked */ {
    String ctc = txtCommand.getText().toString();
    StringSelection stringSelection = new StringSelection(ctc);
    Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard();
    clpbrd.setContents(stringSelection, null);
}

// txtCommand is the variable of a text box

Ответ 5

String text = Toolkit.getDefaultToolkit()
        .getSystemClipboard()
        .setContents(
                new StringSelection(Jtextbox1.getText()),
                null
        ); 

System.out.println(text);