Zwischenablage überwachen

flashray

Erfahrenes Mitglied
Hallo,

ich möchte die Zwischenablage überwachen. Funktioniert leider nicht so wie es soll.

Wenn ich in der selben Anwendung mehrmals hintereinander verschiedene Texte kopiere, werden alle nach dem ersten ignoriert. Wechsel ich zu einer anderen Anwendung kopiere dort nun etwas, dass kriegt der Listener wieder mit. ...

Kennt jemand das Problem?

Vg Erdal

Java:
package test;

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

public class Test implements FlavorListener {

	private Clipboard systemClipboard;

	private Transferable transferData;

	public Test() {
		Clipboard systemClipboard = Toolkit.getDefaultToolkit()
				.getSystemClipboard();
		systemClipboard.addFlavorListener(this);
	}

	public static void main(String[] args) {
		new Test();
		while (true) {
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	@Override
	public void flavorsChanged(FlavorEvent e) {
		systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
		transferData = systemClipboard.getContents(null);
		try {
			String data = "";
			if (transferData != null) {
				data = (String) transferData
						.getTransferData(DataFlavor.stringFlavor);
				System.out.println(data);
			} else {
				System.out.println("null");
			}

		} catch (UnsupportedFlavorException e1) {
			e1.printStackTrace();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
	}
}
 
Hi,
du fügst der Zwischenablage einen FlavorListener hinzu. DataFlavor sind quasi die Metadaten des Zwischenablage Inhalts. Du wirst also nur ein Event empfangen wenn du vereinfacht gesagt als erstes Text und als zweites ein Bild zur Zwischenablage hinzufügst.

Was man bräuchte wäre ein Listener auf den Zwischenablageinhalt. Mir ist aber nicht bekannt, dass es so etwas gibt. Eine Lösung wäre daher eventuell in periodischen Abständen den Inhalt zu pollen und mit dem vorherigen Inhalt zu vergleichen...

Grüße!
 
Asoo. Die Idee mit der periodischen Abfrage hatte ich bereits schon. War aber mit dieser unzufrieden weil ich mir unter dem FlavourListener anderes vorgestellt hatte. :)

Danke.
 
Zurück