Как вывести выделенный текст за пределы текущего окна программы java? - PullRequest
1 голос
/ 04 мая 2020

Я работаю над программой Java, которая должна выводить выделенный текст в других приложениях ОС (браузер, текстовый редактор, pdf-reader и т. Д. c.).

Например, Я выделяю текст в Stack-overflow и запускаю свою программу Java, она должна выводить выбранный текст.

Я нашел метод getSystemSelection в классе Toolkit пакета java.awt, но результат моей программы - null.

Моя программа следующая -

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

public class MyProg {

        public static void main(String args[])throws Exception
        {

            // Get default Toolkit
            Toolkit T = Toolkit.getDefaultToolkit();

            Clipboard c = T.getSystemSelection();

            System.out.println(c.getData(DataFlavor.stringFlavor));
        }
    }

Есть ли у кого-нибудь предложения?

1 Ответ

1 голос
/ 04 мая 2020

Я считаю, что упомянутый вами метод будет работать для доступа к выделенному тексту в любом месте вашего собственного приложения. Но возможность делать это в разных приложениях будет ограничена операционной системой хоста и другим приложением. В некоторых случаях это возможно, но не повсеместно. Так что стандартного способа сделать это в Java не будет. Возможно, существует малоизвестная библиотека, которая занимается этим. Скорее всего, потребуется написать оболочку JNI на языке вроде C, а затем получить доступ к ней из Java, и эта оболочка должна иметь уникальные реализации для каждой поддерживаемой платформы.

Простым обходным путем будет требовать, чтобы пользователь скопировал выделенный текст в буфер обмена, после чего его будет легко прочитать из буфера обмена в вашей программе, используя Toolkit.getDefaultToolkit().getSystemClipboard().getData().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...