SWT拖放支持文本小部件

时间:2009-05-27 08:44:17

标签: java swt drag-and-drop

我最近使用SWT编写了一个应用程序。在其中一个对话框中,我有一些小部件,其中一个是Text,旨在支持DND和其他小部件。我首先在同一个对话框中添加了对2 Tree小部件的DND支持(拖动源和放置目标)。在我为该Text小部件添加DND支持之前,我注意到在Linux平台(gtk)上,SWT Text小部件自动获得拖放支持。也就是说,我已经可以从其他树窗口小部件拖放并放在此文本上(在任何位置插入那里),以及选择并将此文本中的任何文本拖动到其他树或文本窗口小部件。

但是,这只适用于Linux平台,但不适用于Windows。如果在Windows上运行,相同的程序将不会对该Text小部件提供任何DND支持(Tree小部件当然具有DND支持,因为我专门为它们编写)。

所以这就是我想要在Windows上实现的目标:

  1. 在文本小部件中的任意位置放置文本。
  2. 在掉落之前和悬停时,能够清楚地看到插入位置在预定位置下降的位置。插入位置应与鼠标光标一起移动。
  3. 支持文本小部件中的多行
  4. 解决方案:

    DropTarget target = new DropTarget(sytledText, DND.DROP_MOVE | DND.DROP_COPY);
    target.setTransfer(new Transfer[] { TextTransfer.getInstance() });
    target.addDropListener(new StyleTextDropTargetEffect(sytledText));
    
    1. 使用StyledText而不是Text小部件
    2. 使用StyledTextDropTargetEffect(或扩展它)并将其添加为dr op listener

1 个答案:

答案 0 :(得分:3)

  1. &安培;
  2. 在Windows中
  3. AFAIK,您无法轻松使用“文本”小部件。在删除时,您可以在最后一个光标位置或文本末尾插入文本。您可以考虑使用支持在任何位置删除的StyledText小部件以及“插入符号”。
  4. Text和StyledText都支持SWT.MULTI样式,因为它是多行的。
  5. 您可以在SWT snippets页面找到许多精彩的代码段,包括使用StyledText小部件拖放的示例。还有DND in SWT的好介绍。

相关问题