2009-05-27 40 views
2

我最近使用SWT編寫了一個應用程序。在其中的一個對話框中,我有幾個小部件,其中之一是Text,用於支持其他小部件的DND。我已經在同一個對話框(包括拖動源和拖放目標)上首次添加了DND對2樹部件的支持。在爲該Text小部件添加DND支持之前,我注意到在Linux平臺(gtk)上,SWT Text小部件自動獲得拖放支持。也就是說,我已經可以從其他Tree小部件拖動並放置在該Text上(在任何插入位置),並且可以從Text中選擇並拖動任何文本到其他Tree或Text小部件。對文本部件的SWT拖放支持

但是,這隻適用於Linux平臺,而不適用於Windows。同樣的程序,如果在Windows上運行,將不會對該文本部件有任何DND支持(當然,由於我專門爲它們編寫了樹部件,所以樹部件當然具有DND支持)。

因此,這裏是我想實現在Windows以及什麼:在文本小部件的任何位置

  1. 式文本。
  2. 在掉落之前和懸停時,能夠清楚地看到插入位置的位置。光標位置應該隨鼠標光標一起移動。
  3. 支持多線在文本窗口小部件

SOLUTION:

DropTarget target = new DropTarget(sytledText, DND.DROP_MOVE | DND.DROP_COPY); 
target.setTransfer(new Transfer[] { TextTransfer.getInstance() }); 
target.addDropListener(new StyleTextDropTargetEffect(sytledText)); 
  1. 使用StyledText代替文本插件
  2. 使用StyledTextDropTargetEffect(或擴展它),並將其添加爲DR運算聽者
+0

嗯,我確實讓自己的手髒了,爲自己創造了一個。但是,我無法解決滾動位置的問題。 事實證明StyledText已經具有類StyledTextDropTargetEffect的這種支持。直到Csaba_H提出來之前我沒有注意到它。謝謝! – bryantsai 2009-06-24 11:33:50

回答

2
  1. &
  2. AFAIK在Windows中,您無法輕鬆使用文本小部件。放下後,您可以在最後一個光標位置或文本末尾插入文本。您可以考慮使用StyledText小部件,該小部件支持在任何位置放置,並且「插入光標懸停」。
  3. Text和StyledText都支持SWT.MULTI風格,因爲它是多行的。

您可以在SWT snippets頁面找到許多精彩的代碼片段,包括使用StyledText小部件進行拖放的示例。還有一個很好的介紹DND in SWT