Zwischenablage lesen und schreiben

Status
Nicht offen für weitere Antworten.

Sydney1234

Neues Mitglied
Hallo,

es ist zwar relativ leicht möglich etwas in die Zwischenablage zu schreiben:
Java:
final Clipboard systemZwischenablage = Toolkit.getDefaultToolkit().getSystemClipboard();
final StringSelection inhalt = new StringSelection( "<ul><li>test</li></ul> );
systemZwischenablage.setContents( inhalt, this );
aber es gibt Unterschiede zwischen dem und Strg+C.
Füge ich diese Zwischenablage irgendwo anders ein (in diesem Fall Track+) wird hier der HTML-String plain dargestellt.
Zeige ich den HTML-String in einem SWT-Browser-Widget an:
Java:
final Browser browserAusgang = new Browser(composite, SWT.MULTI | SWT.BORDER );
browserAusgang.setText( "<ul><li>test</li></ul> );
und kopiere diese HTML-Darstellung mit String+C um sie anschließend in Track+ einzufügen erkennt dieses als HTML an und stellt es auch korrekt als HTML dar. Wie kommt dieser Unterschied zustande? Kann man beim Schreiben in die Zwischenablage noch einen Typen angeben a la MIME?
Ich bin für jeden Hinweis dankbar.
 

Sydney1234

Neues Mitglied
Ich habe es mal mit einem eigenen Transferable probiert (besser gesagt, ich habe eine Klasse aus dem Java-Framework kopiert, da diese nicht frei zugänglich ist, Klasse
Code:
BasicTransferable
). Allerdings führt diese nicht zu dem gewünschten Ergebnis. Füge ich jetzt den Text aus der Zwischenablage in das Track+-Tool ein, so zeigt er nichts mehr an, beim Texteditor funzt es noch. Vermutlich liefere ich nicht genau den Typen, den das Tool erwartet. Wie bekomme ich raus, was er will? Andere Variante ist, dass ich meinem Anzeige-Widget vorgaukel das der Nutzer alles selektiert hat und Strg+C drückt (dann muss ich mich nicht mehr darum kümmern und es funzt wie gewünscht), aber wie kann ich das machen? Ich müsste dann ja irgendwie ein Event auslösen.

Hier mein kopiertes und leicht geändertes Transferable:
Java:
package de.csc_dd.tracformatierer;

import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.io.StringBufferInputStream;
import java.io.StringReader;

import javax.swing.plaf.UIResource;

public class HtmlTransferable
implements Transferable, UIResource
{
    protected String vPlainData;
    protected String vHtmlData;

    private static DataFlavor[] sHtmlFlavors;
    private static DataFlavor[] sStringFlavors;
    private static DataFlavor[] sPlainFlavors;

    static
    {
    	try
    	{
    		sHtmlFlavors = new DataFlavor[3];
    		sHtmlFlavors[0] = new DataFlavor("text/html;class=java.lang.String");
    		sHtmlFlavors[1] = new DataFlavor("text/html;class=java.io.Reader");
    		sHtmlFlavors[2] = new DataFlavor("text/html;charset=unicode;class=java.io.InputStream");

    		sPlainFlavors = new DataFlavor[3];
    		sPlainFlavors[0] = new DataFlavor("text/plain;class=java.lang.String");
    		sPlainFlavors[1] = new DataFlavor("text/plain;class=java.io.Reader");
    		sPlainFlavors[2] = new DataFlavor("text/plain;charset=unicode;class=java.io.InputStream");

    		sStringFlavors = new DataFlavor[2];
    		sStringFlavors[0] = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType+";class=java.lang.String");
    		sStringFlavors[1] = DataFlavor.stringFlavor;

    	}
    	catch (ClassNotFoundException cle)
    	{
    		System.err.println("error initializing javax.swing.plaf.basic.BasicTranserable");
    	}
    }
    
    public HtmlTransferable( String pPlainData, String pHtmlData )
    {
    	this.vPlainData = pPlainData;
    	this.vHtmlData = pHtmlData;
    }


    /**
     * Returns an array of DataFlavor objects indicating the flavors the data 
     * can be provided in.  The array should be ordered according to preference
     * for providing the data (from most richly descriptive to least descriptive).
     * @return an array of data flavors in which this data can be transferred
     */
    @Override
    public DataFlavor[] getTransferDataFlavors()
    {
    	int nHTML = (isHTMLSupported()) ? sHtmlFlavors.length : 0;
    	int nPlain = (isPlainSupported()) ? sPlainFlavors.length: 0;
    	int nString = (isPlainSupported()) ? sStringFlavors.length : 0;
    	int nFlavors = nHTML + nPlain + nString;
    	DataFlavor[] flavors = new DataFlavor[nFlavors];

    	// fill in the array
    	int nDone = 0;
    	if (nHTML > 0)
    	{
    		System.arraycopy(sHtmlFlavors, 0, flavors, nDone, nHTML);
    		nDone += nHTML;
    	}
    	if (nPlain > 0)
    	{
    		System.arraycopy(sPlainFlavors, 0, flavors, nDone, nPlain);
    		nDone += nPlain;
    	}
    	if (nString > 0)
    	{
    		System.arraycopy(sStringFlavors, 0, flavors, nDone, nString);
    		nDone += nString;
    	}
    	return flavors;
    }

    /**
     * Returns whether or not the specified data flavor is supported for
     * this object.
     * @param pFlavor the requested flavor for the data
     * @return boolean indicating whether or not the data flavor is supported
     */
    @Override
    public boolean isDataFlavorSupported(DataFlavor pFlavor)
    {
    	DataFlavor[] flavors = getTransferDataFlavors();
    	for (int i = 0; i < flavors.length; i++)
    	{
    		if (flavors[i].equals(pFlavor))
    		{
    			return true;
    		}
    	}
    	return false;
    }

    /**
     * Returns an object which represents the data to be transferred.  The class 
     * of the object returned is defined by the representation class of the flavor.
     *
     * @param pFlavor the requested flavor for the data
     * @see DataFlavor#getRepresentationClass
     * @exception IOException                if the data is no longer available
     *              in the requested flavor.
     * @exception UnsupportedFlavorException if the requested data flavor is
     *              not supported.
     */
    public Object getTransferData(DataFlavor pFlavor)
    throws UnsupportedFlavorException, IOException
    {
    	if (isHTMLFlavor(pFlavor))
    	{
    		String data = getHTMLData();
    		data = (data == null) ? "" : data;
    		if (String.class.equals(pFlavor.getRepresentationClass()))
    		{
    			return data;
    		}
    		else if (Reader.class.equals(pFlavor.getRepresentationClass()))
    		{
    			return new StringReader(data);
    		}
    		else if (InputStream.class.equals(pFlavor.getRepresentationClass()))
    		{
    			return new StringBufferInputStream(data);
    		}
    		// fall through to unsupported
    	}
    	else if (isPlainFlavor(pFlavor))
    	{
    		String data = getPlainData();
    		data = (data == null) ? "" : data;
    		if (String.class.equals(pFlavor.getRepresentationClass()))
    		{
    			return data;
    		}
    		else if (Reader.class.equals(pFlavor.getRepresentationClass()))
    		{
    			return new StringReader(data);
    		}
    		else if (InputStream.class.equals(pFlavor.getRepresentationClass()))
    		{
    			return new StringBufferInputStream(data);
    		}
    		// fall through to unsupported

    	}
    	else if (isStringFlavor(pFlavor))
    	{
    		String data = getPlainData();
    		data = (data == null) ? "" : data;
    		return data;
    	}
    	throw new UnsupportedFlavorException(pFlavor);
    }

    // --- html flavors ----------------------------------------------------------

    /**
     * Returns whether or not the specified data flavor is an HTML flavor that
     * is supported.
     * @param pFlavor the requested flavor for the data
     * @return boolean indicating whether or not the data flavor is supported
     */
    protected boolean isHTMLFlavor(DataFlavor pFlavor)
    {
    	DataFlavor[] flavors = sHtmlFlavors;
    	for (int i = 0; i < flavors.length; i++) 
    	{
    		if (flavors[i].equals(pFlavor))
    		{
    			return true;
    		}
    	}
    	return false;
    }

    /**
     * Should the HTML flavors be offered?  If so, the method
     * getHTMLData should be implemented to provide something reasonable.
     */
    protected boolean isHTMLSupported()
    {
    	return vHtmlData != null;
    }

    /**
     * Fetch the data in a text/html format
     */
    protected String getHTMLData()
    {
    	return vHtmlData;
    }

    // --- plain text flavors ----------------------------------------------------

    /**
     * Returns whether or not the specified data flavor is an plain flavor that
     * is supported.
     * @param pFlavor the requested flavor for the data
     * @return boolean indicating whether or not the data flavor is supported
     */
    protected boolean isPlainFlavor(DataFlavor pFlavor)
    {
    	DataFlavor[] flavors = sPlainFlavors;
    	for (int i = 0; i < flavors.length; i++)
    	{
    		if (flavors[i].equals(pFlavor))
    		{
    			return true;
    		}
    	}
    	return false;
    }

    /**
     * Should the plain text flavors be offered?  If so, the method
     * getPlainData should be implemented to provide something reasonable.
     */
    protected boolean isPlainSupported()
    {
    	return vPlainData != null;
    }

    /**
     * Fetch the data in a text/plain format.
     */
    protected String getPlainData()
    {
    	return vPlainData;
    }

    // --- string flavorss --------------------------------------------------------

    /**
     * Returns whether or not the specified data flavor is a String flavor that
     * is supported.
     * @param pFlavor the requested flavor for the data
     * @return boolean indicating whether or not the data flavor is supported
     */
    protected boolean isStringFlavor(DataFlavor pFlavor)
    {
    	DataFlavor[] flavors = sStringFlavors;
    	for (int i = 0; i < flavors.length; i++)
    	{
    		if (flavors[i].equals(pFlavor))
    		{
    			return true;
    		}
    	}
    	return false;
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
M itext - Button der Text in Zwischenablage stellt Allgemeine Java-Themen 0
I Wie Vektor-Grafik in die Zwischenablage kopieren? Allgemeine Java-Themen 2
B In zwischenablage kopieren Allgemeine Java-Themen 2
M Zwischenablage/ Drag and Drop Allgemeine Java-Themen 9
C Überwachen der Zwischenablage, aber wie? Allgemeine Java-Themen 10
Daniel_L RTF - Format aus Zwischenablage erkennen und "einlesen"? Allgemeine Java-Themen 5
G Text aus Zwischenablage in JTextarea -> JDBC Error Allgemeine Java-Themen 3
S Bild aus Zwischenablage in Applet einfügen Allgemeine Java-Themen 2
G String in die Zwischenablage schreiben Allgemeine Java-Themen 5
P Überwachung der System-Zwischenablage Allgemeine Java-Themen 2
N Struct oder Record? Und COPY in und aus Zwischenablage Allgemeine Java-Themen 2
M Bild in Zwischenablage kopieren? Allgemeine Java-Themen 7
A Windows Zwischenablage Allgemeine Java-Themen 2
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
G Dateien lesen Allgemeine Java-Themen 3
OnDemand Excel lesen wie CSV Allgemeine Java-Themen 7
S Textdatei statt von Dateisystem aus .jar lesen Allgemeine Java-Themen 3
oskarS85 GeoTiff NDVI pixelweise lesen Allgemeine Java-Themen 2
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
OnDemand CSV lesen flexible Spalten Allgemeine Java-Themen 3
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
S File lesen und schreiben Java 6 Allgemeine Java-Themen 2
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
L Input/Output Kassenzettel lesen aus einem Bild Allgemeine Java-Themen 2
M Daten aus MatLab Datei lesen Allgemeine Java-Themen 8
G Excel Tabelle lesen und in neue Excel Tabelle einfügen Allgemeine Java-Themen 11
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
A File lesen Codierung Charset Allgemeine Java-Themen 5
E Socket Dynamische Klasse von ObjectOutputStream lesen. Allgemeine Java-Themen 8
D Mit Java PHP hashmap lesen Allgemeine Java-Themen 1
B Quellcode lesen - Aussortieren Allgemeine Java-Themen 3
A Steuerung von Spiel aus Datei lesen Allgemeine Java-Themen 0
F Best Practice Große Anzahl an Objekten speichern und lesen Allgemeine Java-Themen 19
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
OnDemand Java Barcode lesen Allgemeine Java-Themen 4
F Json in sql speichern und lesen Allgemeine Java-Themen 10
K Classpath Alle Classen aus einem Package lesen Allgemeine Java-Themen 7
X NetBeans Bilder und andere Dateien ins .jar schreiben und wieder aus .jar lesen Allgemeine Java-Themen 6
K Bestimmten Bereich eines Strings lesen Allgemeine Java-Themen 6
H Input/Output .txt Datei in Jar lesen Allgemeine Java-Themen 6
F Lesen effizienter als schreiben? Allgemeine Java-Themen 4
RalleYTN REST API ResponseType application/pdf lesen Allgemeine Java-Themen 0
R Inputstream lesen mit Pointer Allgemeine Java-Themen 0
I Setzen und Lesen eines Objektes (Enum?) Allgemeine Java-Themen 10
javampir Input/Output Effizienz beim binären Lesen einer Datei Allgemeine Java-Themen 6
D Datentyp von Unbounded Wildcards lesen Allgemeine Java-Themen 2
J Text lesen und in Variablen speichern Allgemeine Java-Themen 3
B SMS von Vodafone Mobile Connest mit JAVA-Programm lesen Allgemeine Java-Themen 0
2 String Array in Datei schreiben und wieder davon lesen Allgemeine Java-Themen 2
A In Excel-Datei schreiben, Formeln der Mappe anwenden, Wert lesen Allgemeine Java-Themen 3
Thallius Dateien Zippen und wieder heraus lesen? Allgemeine Java-Themen 4
L Input/Output Datei in den Speicher lesen. Allgemeine Java-Themen 9
E Lesen von mehrere Csv-Datei und ihre Inhalte vergleichen Allgemeine Java-Themen 3
F Java Bytecode lesen Allgemeine Java-Themen 5
W Schreiben/Lesen aus RS232 / jssc Allgemeine Java-Themen 0
L Input/Output Datei lesen Allgemeine Java-Themen 1
H Mehrere Bilder aus einer Datei lesen Allgemeine Java-Themen 2
OnDemand Lesen aus Properties Allgemeine Java-Themen 7
S XML lesen, verarbeiten, speichern klappt in Eclipse, aber nicht in der JAR Allgemeine Java-Themen 4
N Content von URL lesen Allgemeine Java-Themen 18
T UTF-16LE String aus LDAP lesen und als ISO-8859-1 in DB speichern? Allgemeine Java-Themen 2
J Bytes aus Socket lesen Allgemeine Java-Themen 9
M Aus Excel Tabelle lesen und Werte in Array speichern Allgemeine Java-Themen 15
W Passwortgeschuetzte .mpp Datei mit MPXJ lesen Allgemeine Java-Themen 3
O BufferedReader von ganz unten anfangen zu lesen Allgemeine Java-Themen 7
G Binäre Datei lesen / schreiben Allgemeine Java-Themen 9
E Apache POI-Datei lesen und umschreiben Allgemeine Java-Themen 8
T Welches Tuturial soll ich paralell lesen ? Allgemeine Java-Themen 3
T Datei lesen, bearbeiten, speichern Allgemeine Java-Themen 14
T Kann HTML Datei nicht lesen Allgemeine Java-Themen 3
S Die Zeile die JUnit gerade ausführt lesen Allgemeine Java-Themen 15
A nur einen Wert aus einer .conf lesen und erneuern Allgemeine Java-Themen 3
H Input/Output InputStream: 32-Bit-Ganzzahl (DWORD) binär lesen Allgemeine Java-Themen 5
B Hex aus .txt lesen Allgemeine Java-Themen 8
C Datentypen von string in ein array lesen Allgemeine Java-Themen 4
C aus einem String einzelne Hex Werte lesen Allgemeine Java-Themen 7
D Ausgabe von C# Konsolenanwendung lesen Allgemeine Java-Themen 5
F CSV-Datei aus Internet lesen Allgemeine Java-Themen 2
P ObjectInputStream kann nicht vernünftig lesen... Allgemeine Java-Themen 9
R Datei zeilenweise lesen und schreiben Allgemeine Java-Themen 6
0 Datein aus laufender Jar lesen und bearbeiten Allgemeine Java-Themen 10
S Dateien aus src-Ordner lesen Allgemeine Java-Themen 3
F hex-farbwert der pixel aus bildern lesen Allgemeine Java-Themen 4
L Wikipedia Artikel lesen Allgemeine Java-Themen 16
J HSSF - schreiben in und lesen aus vorhandener Datei Allgemeine Java-Themen 6
R Properties Datei aus Applikationsverzeichnis lesen Allgemeine Java-Themen 5
J xlsx Dateien lesen OHNE apache POI Allgemeine Java-Themen 6
C Property-File lesen und schreiben Allgemeine Java-Themen 20
M Binäre Datei schreiben und lesen Allgemeine Java-Themen 4
N Problem beim lesen einer File in JAR-File Allgemeine Java-Themen 3
D Datei lesen ohne sie für umbenennen/verschieben zu sperren Allgemeine Java-Themen 13
reibi Sicher ein File lesen Allgemeine Java-Themen 28
R Java lesen von Dateien, Little-Endian Allgemeine Java-Themen 2
N Performates lesen von Objekten aus Dateien Allgemeine Java-Themen 2
T Integer aus InputStream lesen Allgemeine Java-Themen 3
C Alle Klassen eines Packages lesen und instanzieren? Allgemeine Java-Themen 9
D Probleme beim schreiben / lesen in TreeMap Allgemeine Java-Themen 9
D (Viele) Daten performant speichern und lesen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben