Как вставить содержимое системного буфера обмена в произвольное окно, используя Java - PullRequest
2 голосов
/ 16 июня 2011

Я хотел бы написать программу на Java с кнопкой. Когда кнопка нажата, она вставляет / удаляет содержимое системного буфера обмена в текстовое поле, которое в настоящее время имеет фокус в произвольном, возможно, не Java-приложении (скажем, MS Word). По сути, действие кнопки должно как-то имитировать отправку действия CTRL-V (вставка).

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

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Пакет java.awt.datatransfer представляется решением, согласно этой статье .Вот другая статья .

С последней страницы, необходимый импорт:

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

И код метода ниже.Решение состоит в том, чтобы создать слушателя и добавить его к кнопке.Слушатель должен просто получить содержимое буфера обмена и вставить его в любой компонент, который вы пожелаете.

public void setClipboardContents( String aString ){
  StringSelection stringSelection = new StringSelection( aString );
  Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
  clipboard.setContents( stringSelection, this );
}

public String getClipboardContents() {
  String result = "";
  Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
  //odd: the Object param of getContents is not currently used
  Transferable contents = clipboard.getContents(null);
  boolean hasTransferableText =
    (contents != null) &&
    contents.isDataFlavorSupported(DataFlavor.stringFlavor)
  ;
  if ( hasTransferableText ) {
    try {
      result = (String)contents.getTransferData(DataFlavor.stringFlavor);
    }
    catch (UnsupportedFlavorException ex){
      //highly unlikely since we are using a standard DataFlavor
      System.out.println(ex);
      ex.printStackTrace();
    }
    catch (IOException ex) {
      System.out.println(ex);
      ex.printStackTrace();
    }
  }
  return result;
}
0 голосов
/ 16 июня 2011

Используйте Действия, предоставляемые наборами редактора:

JButton paste = new JButton( new DefaultEditorKit.PasteAction() );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...