2
是否可以將多個對象(代表TreeViewer
選項)放入剪貼板?這是我的Cut代碼。TreeViewer選項和剪貼板
static public void Cut(EssentialData dataInst)
{
IStructuredSelection selection = (IStructuredSelection)dataInst.getTreeViewer().getSelection();
if(selection == null)
{
System.err.println("selection received was null");
return;
}
Object[] objects = selection.toArray();
//because setContents requires a Transfer object for every object sent
List<Transfer> typesList = new ArrayList<>();
for(int i = 0; i < objects.length; i++)
typesList.add(FileEntryTransfer.getInstance());
final Clipboard cb = new Clipboard(Display.getCurrent());
cb.setContents(objects, typesList.toArray(new Transfer[]{}));
cb.dispose();
for(int i = 0; i < objects.length; i++)
dataInst.getFileManager().removeEntry((FileEntry)objects[i]);
dataInst.getTreeViewer().refresh(false);
}
我試圖做的是地方多個選擇,這是FileEntry
情況下,到剪貼板。
FileEntryTransfer
是我自定義的ByteArrayTransfer
類,我也用於免打擾。它運作良好,但我注意到setContents()
實際上只發送一個FileEntry
對象,而不是對象數組(這正是我想要的)。
任何想法?
[編輯]感謝vanaprogeja,我
cb.setContents(new Object[]{ objects }, new Transfer[] { FileEntryTransfer.getInstance() });
你不能用一個單獨的剪貼板對象?對不起,我沒有經歷過這個,只是把它扔在那裏。 – 2011-12-14 02:02:37
要爲每個對象調用setContents()?不,那不行, setContents()替換剪貼板中的任何內容。 – BloodyNobody 2011-12-14 05:36:00