Ich weiß, dass man Strings in ein Clipboard kopieren kann, doch kann man auch einfach andere Objekte, wie Fonts usw. kopieren?
Ja.Ich weiß, dass man Strings in ein Clipboard kopieren kann, doch kann man auch einfach andere Objekte, wie Fonts usw. kopieren?
Wenn du von Fonts sprichst, meinst du dann damit RichText? Das ist letztlich auch nur Plaintext mit bestimmten Formatierungsanweisungen, also ein String... Beispiel:wie Fonts usw. kopieren
{\rtf1
Guten Tag!
\line
{\i Dies} ist \b{\i ein
\i0 formatierter \b0Text}.
\par
\b Das \b0Ende.
}
Ich meinte eigentlich java.awt.FontWenn du von Fonts sprichst, meinst du dann damit RichText? Das ist letztlich auch nur Plaintext mit bestimmten Formatierungsanweisungen, also ein String... Beispiel:
Code:{\rtf1 Guten Tag! \line {\i Dies} ist \b{\i ein \i0 formatierter \b0Text}. \par \b Das \b0Ende. }
Weitere Hinweise dazu bei Wikipedia.
Und wie erwartest du, eine Instanz der Klasse Font in die Zwischenablage kopieren zu können?Ich meinte eigentlich java.awt.Font
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
public class FontClipboardExample {
public static void main(String[] args) {
// Create a Font object
Font font = new Font("Arial", Font.PLAIN, 12);
// Store the Font object to the clipboard
storeFontToClipboard(font);
// Read the Font object from the clipboard
Font retrievedFont = readFontFromClipboard();
if (retrievedFont != null) {
System.out.println("Retrieved Font: " + retrievedFont);
} else {
System.out.println("No Font found in clipboard");
}
}
public static void storeFontToClipboard(Font font) {
String fontString = font.getFontName() + "|" + font.getStyle() + "|" + font.getSize();
StringSelection stringSelection = new StringSelection(fontString);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, null);
}
public static Font readFontFromClipboard() {
try {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = clipboard.getContents(null);
String fontString = (String) contents.getTransferData(DataFlavor.stringFlavor);
String[] fontData = fontString.split("\\|");
String fontName = fontData[0];
int fontStyle = Integer.parseInt(fontData[1]);
int fontSize = Integer.parseInt(fontData[2]);
return new Font(fontName, fontStyle, fontSize);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Base64;
public class SerializableClipboardExample {
public static void main(String[] args) {
// Create a Font object
Font font = new Font("Arial", Font.PLAIN, 12);
// Store the Font object to the clipboard
storeObjectToClipboard(font);
// Read the Font object from the clipboard
Font retrievedFont = (Font) readObjectFromClipboard();
if (retrievedFont != null) {
System.out.println("Retrieved Font: " + retrievedFont);
} else {
System.out.println("No Font found in clipboard");
}
}
public static void storeObjectToClipboard(Serializable object) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(object);
oos.close();
String data = Base64.getEncoder().encodeToString(baos.toByteArray());
String clipboardString = "serialized://" + object.getClass().getName() + "/" + data;
StringSelection stringSelection = new StringSelection(clipboardString);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, null);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Object readObjectFromClipboard() {
try {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = clipboard.getContents(null);
String clipboardString = (String) contents.getTransferData(DataFlavor.stringFlavor);
if (clipboardString.startsWith("serialized://")) {
String[] parts = clipboardString.split("/", 4);
String className = parts[2];
String data = parts[3];
byte[] decodedData = Base64.getDecoder().decode(data);
ByteArrayInputStream bais = new ByteArrayInputStream(decodedData);
ObjectInputStream ois = new ObjectInputStream(bais);
Object retrievedObject = ois.readObject();
ois.close();
return retrievedObject;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
Transferable transferable = new Transferable() {
@Override
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[] {
DataFlavor.stringFlavor,
DataFlavor.imageFlavor,
// Add more data flavors here
};
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor) {
return Arrays.asList(getTransferDataFlavors()).contains(flavor);
}
@Override
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if (flavor.equals(DataFlavor.stringFlavor)) {
return "Hello, World!";
} else if (flavor.equals(DataFlavor.imageFlavor)) {
return ImageIO.read(new File("image.jpg"));
}
// Add more cases for each data flavor here
throw new UnsupportedFlavorException(flavor);
}
};