JAvaオペレーティングシステムのクリップボードClipboardおよびカスタムクリップボード

2702 ワード

システムクリップ:
システムクリップボードは、一般的にStringテキストタイプとImageイメージタイプをサポートします.
Stringテキストタイプ
挿入:
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();//       
	String str = "  ";//     
	StringSelection selection = new StringSelection(str);//  String    
	clipboard.setContents(selection, selection);//          

  取得:
Transferable content = clipboard.getContents(null);//           
if (content.isDataFlavorSupported(DataFlavor.stringFlavor)) {//         
	String text = (String) content.getTransferData(DataFlavor.stringFlavor);//         
	if (text == null) {
	    return;
	}
    System.out.println(text);

}

 
カスタムクリップボード:
まず、データクラスを書く必要があります.
public class TestSelection implements Transferable, ClipboardOwner {
    public static final DataFlavor rangeFlavor = new DataFlavor(RangeDataModel.class, "Report Range");//class     java      
   private static final DataFlavor[] flavors = { rangeFlavor };
    private Object data;
    public TestSelection(Object data) {
		this.data = data;
	}
    
    @Override
	public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
		if (flavor.equals(flavors[RANGE])) {
			return data;
		} else {
			throw new UnsupportedFlavorException(flavor);
		}
	}

	@Override
	public DataFlavor[] getTransferDataFlavors() {
		return (DataFlavor[]) flavors.clone();
	}

	@Override
	public boolean isDataFlavorSupported(DataFlavor flavor) {
		for (int i = 0; i < flavors.length; i++) {
			if (flavor.equals(flavors[i])) {
				return true;
			}
		}
		return false;
	}

	@Override
	public void lostOwnership(Clipboard clipboard, Transferable contents) {
		// TODO Auto-generated method stub

	}


}

 次に、値を設定します.
Clipboard clipboard = new Clipboard("clipboardName");//          

ReportSelection content = new ReportSelection(data);//       data     java    
	clipboard.setContents(content, null);

 
取得値:
Transferable content = clipboard.getContents(null);//            null  
if (content.isDataFlavorSupported(ReportSelection.rangeFlavor)) {
    RangeDataModel data = (RangeDataModel) content.getTransferData(ReportSelection.rangeFlavor);
    System.out.println(data);

}