Буфер обмена JTextArea.copy () очищается при выходе из программы - PullRequest
3 голосов
/ 04 декабря 2009

У меня есть JDialog с компонентом JTextArea. Этот диалог показывает пользователю, какие аргументы использовать при запуске программы, чтобы она запускала режим, который они только что установили. У меня есть кнопка в диалоговом окне, чтобы скопировать аргументы в буфер обмена. При этом используется метод copy () объекта JTextArea.

Это работает отлично, и буфер обмена содержит правильный текст до тех пор, пока программа не будет закрыта. Тогда буфер обмена теряется. Есть ли способ сохранить его после выхода из программы? Обычной операцией было бы затем выйти из программы и запустить ее снова с аргументами.

Это может звучать странно, но идея заключается в том, что пользователь настроит среду с графическим интерфейсом, а затем запустит ее с аргументами в cron или подобном.

Ответы [ 5 ]

1 голос
/ 14 января 2011

Вы можете использовать Робот для симуляции Ctrl + c

 Robot robot = new Robot();
 robot.keyPress(KeyEvent.VK_CONTROL);
 robot.keyPress(KeyEvent.VK_C);
 robot.keyRelease( KeyEvent.VK_C );
 robot.keyRelease( KeyEvent.VK_CONTROL );

Это определенно останется в буфере обмена даже после закрытия вашей программы.

Или вы можете попробовать

StringSelection ss = new StringSelection("your text for clipboard");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);

, который работает для меня в Windows 7.

1 голос
/ 04 декабря 2009

Я только что узнал, что в Java есть два буфера обмена: локальный и системный. Объясни бы что-нибудь, если бы ты просто взял местный буфер обмена.

Вот пример , который использует системный буфер обмена. Надеюсь, это решит вашу проблему!

1 голос
/ 04 декабря 2009

Прекрасно работает для меня, когда я использую Ctrl + C для копирования содержимого текстового компонента. Поэтому попробуйте использовать прилагаемое действие (которое использует Ctrl + C) для копирования вместо метода copy ():

JButton button = new JButton(DefaultEditorKit.CopyAction());
0 голосов
/ 30 июля 2013

Для меня этого достаточно:

JButton buttonCopy = new JButton(new DefaultEditorKit.CopyAction());
buttonCopy.setText("copy");
0 голосов
/ 04 декабря 2009

Я бы предложил вместо этого использовать Preferences API .

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