Automatisches Auslesen der Zwischenablage plattformübergreif

Status
Nicht offen für weitere Antworten.
J

jo

Gast
Hallo!

Ich habe ein Problem beim Arbeiten mit der Zwischenablage mit einem Java-Programm. Vorneweg: Ja, ich habe bereits die Suche des Forums bemüht und keinen entsprechenden Beitrag gefunden, bin überhaupt schon ne Woche an dem Problem dran und heute erst auf das Forum gestoßen.
Möglicherweise ist das Problem dennoch völlig trivial, aber ich komme einfach nicht weiter.

Zur Funktion meines Programms: Beim Starten wird die Systemzwischenablage mit einem Listener versehen, der immer, wenn in einem beliebigen anderen Programm etwas in die Zwischenablage kopiert wird, prüft, ob es sich dabei um Text handelt und wenn ja diesen Text intern weiterverarbeitet.
Unter Windows funktioniert das sehr schön mit folgendem Code. Unter Linux jedoch habe ich das Problem, dass wenn ich z. B. aus Firefox ein Wort kopiere, das Programm das erkennt. OK. Wenn ich dann direkt danach wieder in Forefox etwas kopiere, erkennt mein Programm es nichtmehr. Ich muss erst aus einem andern Programm, gedit o. ä., ein Wort kopieren, das erkennt er dann wieder. Das Problem hatte ich erst auch unter Windows, habe aber einige Codezeilen eingefügt (speziell kommentiert), so dass es da nichtmehr auftrat. Unter Linux bringt das nix.

Code:
    private Clipboard systemClipboard;
...
    private void zwischenablageIntegrieren() {
        systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        // diese beiden Zeilen musste ich einfügen, damit es unter Windows klappt
        Transferable transferData = systemClipboard.getContents(null);
        systemClipboard.setContents(transferData, null);

        FlavorListener zwischenablageUeberwachen = new FlavorListener() {
            public void flavorsChanged(FlavorEvent e) {
                Transferable transferData = systemClipboard.getContents(null);
                for (DataFlavor dataFlavor : transferData.getTransferDataFlavors()) {
                    try {
                        Object content = transferData.getTransferData(dataFlavor);
                        if ((dataFlavor.getMimeType().startsWith("text/plain") && (content instanceof String))) {
                            String inhalt = (String) content;
                            rufeTolleFunktionAuf(inhalt.trim());
                            break;
                        }
                    } catch (Exception a) {
                        System.out.println("Fehler!");
                    }
                }
                // auch diese Zeile musste ich einfügen, damit es unter Windows läuft
                systemClipboard.setContents(transferData, null);
            }
        };

        systemClipboard.addFlavorListener(zwischenablageUeberwachen);
    }

Sieht irgendjemand wo das Problem liegen könnte? Oder hat zumindest eine Ahnung, wie ich dieses plattformspezifische Verhalten in den Griff kriegen könnte?
Schonmal besten Dank für die Hilfe!
 

Wildcard

Top Contributor
Ok, das dürfte problematisch werden.
Der Listener wird erstmal nur aktiviert wenn sich der DataFlavor ändert und nicht wenn sich der Content ändert.
Redundante Events können jedoch trotzdem vorkommen auch wenn der Flavor gleich bleibt und sich nur der ändert. (Genau das scheint unter Windows zu passieren)
Speziell unter Linux kommen noch Kompatibiliätsprobleme hinzu da dieses Feature nicht wirklich Cross-Plattform fähig ist.
Ich verweise dich mal an diesen Bug:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4259272

Vermutlich wird dir nichts anderes übrig bleiben als in einem Thread regelmäßig auf Aktualisierungen zu prüfen :?
Sollte ich mich irren und du eine Lösung finden, sei bitte so nett sie hier Kund zu tun.
 
J

jo

Gast
Ok, schonmal danke Wildcard.
Dem verlinkten Bug entnehme ich, dass man sich schon vor fünf Jahren mit dem Problem rumgeschlagen hat und für nicht-Windows-Systeme keine befriedigende Lösung existiert.

Ich hatte bereits mal mit "SystemSelection" experimentiert, das hat dann wiederum nur unter Linux und nicht unter Windows funktioniert, gleichzeitig aber auch das Programm massiv ausgebremst, weshalb ich das schnell wieder verworfen habe.

Ich werde weiter recherchieren. Sollte sich noch jemand finden, der denkt eine Lösung gefunden zu haben wäre ich sehr dankbar. Denn alles was jetzt an Möglichkeiten bleibt, ist nicht besonders elegant (à la "Timer" etc.).
 
Bin auch schon eine Woche auf der Suche nach einer vernünftigen Lösung um Veränderungen des Clipboards zu überwachen.

Kannst du mir kurz weiterhelfen, denn deine Version

zwischenablageIntegrieren()

funktioniert bei mir nicht immer, oft muss ich 2-3-4 mal etwas kopieren, bis etwas reagiert...

Oder ist das bei dir auch so?

lg c
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J automatisches ausfüllen eines PDF Formulars Java Basics - Anfänger-Themen 4
S Erste Schritte Bluej Automatisches Einfügen von Objekten Java Basics - Anfänger-Themen 4
C Automatisches Ausfuehren einer Funktion beim Laden eines Jar files Java Basics - Anfänger-Themen 3
B Automatisches öffenen eines Fensters Java Basics - Anfänger-Themen 10
C Automatisches Casten => inkompatibel Java Basics - Anfänger-Themen 7
M Automatisches Methoden-Einfügen bei Eclipse? Java Basics - Anfänger-Themen 2
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
T array auslesen Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
U Sekunden von LocalTime auslesen, wie möglich? Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
J Jsonfile auslesen Java Basics - Anfänger-Themen 8
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
L Zeichen an bestimmter Stelle auslesen Java Basics - Anfänger-Themen 4
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
J Json Datei auslesen Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
N JTable auslesen Java Basics - Anfänger-Themen 6
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
F Webseiten Quelltext auslesen Java Basics - Anfänger-Themen 5
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
S Aus einer .bz2 Datei auslesen Java Basics - Anfänger-Themen 2
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D XML von Seite auslesen Jsoup Java Basics - Anfänger-Themen 2
I Druckerauflösung auslesen - mittlerweile möglich? Java Basics - Anfänger-Themen 4
B WSDL auslesen? Java Basics - Anfänger-Themen 8
D Methoden Textdokument erstellen und auslesen. Java Basics - Anfänger-Themen 46
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
S Datein auslesen und verarbeiten Java Basics - Anfänger-Themen 1
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
S CSV auslesen UTF-8 Problem Java Basics - Anfänger-Themen 7
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
K String buchstaben auslesen Java Basics - Anfänger-Themen 9
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
x-tshainge Interface Wie kann ich aus Textfeldern auslesen Java Basics - Anfänger-Themen 6
Z Ersten Buchstaben eines Elements eines String-Arrays auslesen Java Basics - Anfänger-Themen 5
B .txt. Datei auslesen und bestimmten Wert wiedergeben Java Basics - Anfänger-Themen 5
CptK x wert eines Bildes auslesen Java Basics - Anfänger-Themen 1
T Website auslesen Java Basics - Anfänger-Themen 2
T String auslesen bzw. überprüfen Java Basics - Anfänger-Themen 1
L CSV Auslesen Java Basics - Anfänger-Themen 5
B Auslesen von PDF / Bilder Java Basics - Anfänger-Themen 5
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
D Mit Java HTML bzw Javascript auslesen Java Basics - Anfänger-Themen 1
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
F Zwischenwerte aus Browser auslesen Java Basics - Anfänger-Themen 19
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
J Hashmap auslesen Java Basics - Anfänger-Themen 7
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
D String untereinander auslesen lassen Java Basics - Anfänger-Themen 2
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
J Informationen aus Webseiten auslesen Java Basics - Anfänger-Themen 1
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
dragonfight86 Erste Schritte OpenDocument auslesen Java Basics - Anfänger-Themen 13
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
C Werte aus JTable auslesen Java Basics - Anfänger-Themen 4
Chrizzey45 Calc-Dokument in Java auslesen? Java Basics - Anfänger-Themen 2
B Datei auslesen und 2D-Array anlegen Java Basics - Anfänger-Themen 1
B Key auslesen/ausgeben innerhalb von foreach() Java Basics - Anfänger-Themen 5
M Eigenschaften einer Datei auslesen Java Basics - Anfänger-Themen 5
M Textarea auslesen und beschreiben Java Basics - Anfänger-Themen 8
JokerBlacky Klassen Klasse Queue Klasse mit Attributen anhängen und auslesen können Java Basics - Anfänger-Themen 4
Y Bildschirmauflösung auslesen Java Basics - Anfänger-Themen 4
S for schleife auslesen Java Basics - Anfänger-Themen 4
Voreck String Zeichen für Zeichen auslesen Java Basics - Anfänger-Themen 9
Voreck Array aus txt datei auslesen Java Basics - Anfänger-Themen 2
N JFreeChart --> TimeSeries auslesen Java Basics - Anfänger-Themen 9
OlafHD Datei Auslesen Java Basics - Anfänger-Themen 6
M Metadaten OpenOffice mit Java auslesen Java Basics - Anfänger-Themen 9
P JList, aus selectedValue bestimmten Wert aus Containerklasse auslesen Java Basics - Anfänger-Themen 4
J OpenOffice Dokumentenvariable mit Java auslesen Java Basics - Anfänger-Themen 1
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben