public static void main(String[] args) throws Exception
{
// Get a reference to the clipboard
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
// Poll once per second for a minute
for (int i = 0; i < 60; i++)
{
// Null is ok, because, according to the javadoc, the parameter is not currently used
Transferable transferable = clipboard.getContents(null);
// Ensure that the current contents can be expressed as a String
if (transferable.isDataFlavorSupported(DataFlavor.stringFlavor))
{
// Get clipboard contents and cast to String
String data = (String) transferable.getTransferData(DataFlavor.stringFlavor);
if (data.equals("Hello"))
{
// Change the contents of the clipboard
StringSelection selection = new StringSelection("Test");
clipboard.setContents(selection, selection);
}
}
// Wait for a second before the next poll
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
// no-op
}
}
}
いくつかの簡単なテスト容易性/検証のためにポーリングを追加しました。 1分に1秒間クリップボードをチェックします。私が知っている限り、イベントベースの通知を行う方法はありません(あなたが味の変更を聞いていない限り、あなたはそうではありません)ので、あなたはポーリングに悩まされていると思います。
OSのクリップボードの内容を完全に変更したいのですか?いいえ、結構です。 –
コピー可能クリップボードへのコピー(http://stackoverflow.com/questions/3591945/copying-to-clipboard-in-java) –
@ BlueRaja-DannyPhlughoeftええ、これは私が本当に欲しかったが、良い声明でそれを表現する –