- テキストのコピーとペースト:
以下のコード例は、文字列をClipboardにコピーし、別の場所にペーストする方法を示しています。
import java.awt.*;
import java.awt.datatransfer.*;
public class ClipboardExample {
public static void main(String[] args) {
String text = "コピーするテキスト";
// Clipboardにテキストをコピーする
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection selection = new StringSelection(text);
clipboard.setContents(selection, null);
// Clipboardからテキストを取得してペーストする
Transferable transferable = clipboard.getContents(null);
if (transferable != null && transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) {
try {
String pastedText = (String) transferable.getTransferData(DataFlavor.stringFlavor);
System.out.println("ペーストされたテキスト: " + pastedText);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
- カスタムデータのコピーとペースト:
以下のコード例は、カスタムオブジェクトをClipboardにコピーし、別の場所にペーストする方法を示しています。この場合、カスタムオブジェクトはSerializableインターフェースを実装している必要があります。
import java.awt.*;
import java.awt.datatransfer.*;
import java.io.*;
public class ClipboardExample {
public static void main(String[] args) {
CustomObject data = new CustomObject(); // カスタムオブジェクトのインスタンスを作成
// Clipboardにカスタムオブジェクトをコピーする
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
CustomTransferable transferable = new CustomTransferable(data);
clipboard.setContents(transferable, null);
// Clipboardからカスタムオブジェクトを取得してペーストする
Transferable pastedData = clipboard.getContents(null);
if (pastedData != null && pastedData.isDataFlavorSupported(CustomTransferable.CUSTOM_FLAVOR)) {
try {
CustomObject pastedObject = (CustomObject) pastedData.getTransferData(CustomTransferable.CUSTOM_FLAVOR);
// ペーストされたカスタムオブジェクトを使用する処理
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
// カスタムオブジェクトのクラス
class CustomObject implements Serializable {
// フィールドやメソッドの定義など
}
// カスタムオブジェクトをTransferableに変換するクラス
class CustomTransferable implements Transferable {
public static final DataFlavor CUSTOM_FLAVOR = new DataFlavor(CustomObject.class, "CustomObject");
private CustomObject data;
public CustomTransferable(CustomObject data) {
this.data = data;
}
@Override
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[]{CUSTOM_FLAVOR};
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor) {
return flavor.equals(CUSTOM_FLAVOR);
}
@Override
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
if (flavor.equals(CUSTOM_FLAVOR)) {
return data;
} else {
throw new UnsupportedFlavorException(flavor);
}
}
}