Добрый день.
Есть необходимость знать об изменении содержимого системного буфера обмена.
У класса Сlipboard есть метод добавления объекта типа FlavorListener, который реагирует на изменение типа содержимого в буфере. Но если при изменении содержимого не поменялся его тип, то реакции нет. Хотелось бы узнать, как это можно реализовать без периодического опроса буфера.
Здравствуйте, Аноним, Вы писали:
А>Добрый день.
А>Есть необходимость знать об изменении содержимого системного буфера обмена.
А>У класса Сlipboard есть метод добавления объекта типа FlavorListener, который реагирует на изменение типа содержимого в буфере. Но если при изменении содержимого не поменялся его тип, то реакции нет. Хотелось бы узнать, как это можно реализовать без периодического опроса буфера.
Можно решить постоянной одменой оунера своим
как то так
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.Transferable;
public class RunTest {
public static class Owner implements ClipboardOwner {
@Override
public void lostOwnership(Clipboard clipboard, Transferable contents) {
System.out.println("Changed");
Transferable newContents = clipboard.getContents(this);
clipboard.setContents(newContents, this);
}
}
public static void main(String[] args) throws InterruptedException {
Owner owner = new Owner();
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = clipboard.getContents(owner);
clipboard.setContents(contents, owner);
Thread.sleep(30000);
}
}
Надо запустить и понажимать контрол-С где нибудь.