| 

.NET C# Java Javascript Exception

1
Ich versuche mehrere Datensätze sprich Strings, in der Zwischenablage abzulegen. Von den Strings die ich dort ablege, lässt sich immer nur der zuletzt hinzugefügte wieder Abrufen, alle vorherigen sind weg. Ist das mein Fehler und wie kann ich das roblem umgehen?

Clipboard cb = new Clipboard(Display.getCurrent());
//die Strings die ich erzeugt habe
Object[] data = transferObjects.toArray();
//Beinhaltet n-mal TextTransfer-Handles
Transfer[] transfer = transferHandles.toArray(new Transfer[0]);
cb.setContents(data, transfer, DND.CLIPBOARD);
cb.dispose();
News:
31.12.2011
wwillem 1 1
2 Antworten
0
Hallo,

spontan und ohne mich näher mit dem Clipboard-Zugriff von Java auszukennen würde ich vorschlagen kein Array mit Werten zu füllen, sondern neue Werte mit einem eindeutigen Trennzeichen an einen String anzuhängen und über das Trennzeichen auf den gewünschten Wert zuzugreifen.

Grüße
Sai
31.12.2011
Sai 73 1 5
0
Erstmal, auch für weitere Leser: offenbar handelt es sich hier um org.eclipse.swt.dnd.Clipboard und nicht etwa um java.awt.datatransfer.Clipboard.

Zu Deiner Frage: ich habe unter Java noch nicht mit dem Clipboard gearbeitet, aber unter .NET und Delphi. Und wenn ich diese Erfahrungen und die Doku zusammennehme, dann glaube ich, dass setContents dafür gedacht ist, verschiedene Repräsentationen desselben Datenobjekts ins Clipboard zu legen, nicht aber verschiedene Datenobjekte. Markiere mal in Word einen Text und gehe dann nach "Inhalte einfügen". Du wirst sehen, dass Dir der Text als "unformatierter Text", als RTF, als HTML, als Bild und wer weiß was noch zur Verfügung steht. Genauso kannst Du mit setContents ein Datenobjekt, z.B. einen Text, in verschiedenen Formaten ins Clipboard legen. Du aber versuchst, verschiedene Texte jeweils im gleichen Format ins Clipboard zu legen, und das geht nicht.

Umgehen kannst Du das entweder mit dem Ansatz von Sai, oder indem Du selbst von ByteArrayTransfer ableitest und Dir eine maßgeschneiderte Klasse für den Transfer eines String-Arrays als ein Datenobjekt baust, oder indem Du ein Clipboard verwendest, das mehrere Einträge parallel halten kann. Ob es da etwas mit Java-API gibt, weiß ich aber nicht.
31.12.2011
Matthias Hlawatsch 13,2k 4 9

Stelle deine Java-Frage jetzt!