JAVA SWT中toolbar中的toolitem拖动问题 200

现在有两个toolbar,其中一个里面有数个toolitem,另外一个是空的,两个toolbar都在同一个Composite里面,现在要求拖动toolitem到另外一个t... 现在有两个toolbar,其中一个里面有数个toolitem,另外一个是空的,两个toolbar都在同一个Composite里面,现在要求拖动toolitem到另外一个toolbar里面,另外一个toolbar里面创建这个toolitem,现在只求拖动toolitem的关键代码,希望大神帮助!再次感谢!如果答出,另有加分!
现在贴上部分代码。。。。
toolBar = new ToolBar(sashForm, SWT.FLAT | SWT.WRAP | SWT.RIGHT | SWT.SHADOW_OUT);
toolBar_1 = new ToolBar(sashForm_1, SWT.FLAT | SWT.WRAP | SWT.RIGHT | SWT.SHADOW_OUT);
for(int i=0;i<root.nodeCount();i++){

tltmT = new ToolItem(toolBar, SWT.NONE);
tltmT.setToolTipText(values[1]);
tltmT.setData(values[1],node);
tltmT.setImage(ResourceManager.getPluginImage("MPCM_JAVA", values[3]));
}
求贴出拖动时的关键代码。。。。难道真没人能解决吗?
展开
 我来答
匿名用户
2013-07-22
展开全部

我只知道 jface里有 这个个事件, 这个包是在SWT里的 估计也可以用,TableViewer不是 SWT的 ,但估计 也有类似的 东西 

TableViewer tt = new TableViewer(groups[i], SWT.FULL_SELECTION

| SWT.BORDER);

tt.addDropSupport(DND.DROP_MOVE, new Transfer[] { TextTransfer.getInstance() },(DropTargetListener) dtl);

tt.addDragSupport(DND.DROP_MOVE, new Transfer[] { TextTransfer.getInstance() },(DragSourceListener) dsl);

大概是 加这两个事件的监听,后面的是 用来转换数据的 

找到个 参考 http://www.eclipse.org/articles/Article-SWT-DND/DND-in-SWT.html我写这个已经是很久以前的事了,记不太清了了 主要是 要实现 DropTargetListener 和 DragSourceListener


主要是实现 drop方法 和dragFinished  看文档应该不难

public class DTL implements DropTargetListener{
  public DTL() {
// TODO Auto-generated constructor stub
}

@Override
public void dragEnter(DropTargetEvent event) {
// TODO Auto-generated method stub
//  

}

@Override
public void dragLeave(DropTargetEvent event) {
// TODO Auto-generated method stub
//  

}

@Override
public void dragOperationChanged(DropTargetEvent event) {
// TODO Auto-generated method stub

}

@Override
public void dragOver(DropTargetEvent event) {
// TODO Auto-generated method stub
 
}

@Override
public void drop(DropTargetEvent event) {
// TODO Auto-generated method stub

  
}

@Override
public void dropAccept(DropTargetEvent event) {
// TODO Auto-generated method stub

}

}
更多追问追答
追问
我试过这个方法,但是老是无法执行成功,我不知道是不是我代码哪里写的有问题,这个方法要求你的那个TT必须是一个control,但是toolitem却不是一个control。你可以试试,反正也不是很复杂。
追答
能用 getControl() 方法么,我记得不是直接给 toolitem 加监听,是给他们的 上层,我是 一个tableview,拖动里面的 行(很久没弄现在都不知道那是什么了)

应该给
ToolBar
或者再上层加监听
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
华兴兴华
2013-07-19 · TA获得超过189个赞
知道小有建树答主
回答量:297
采纳率:100%
帮助的人:218万
展开全部
两个toolbar肯定有距离,只要判断toolitem 拖动距离大于两个toolitem直接距离并且用户用户鼠标释放就把原来toolbar里的item删掉,在拖动到另一个附近位置创建一个新的item即可,逻辑大概就是这样!
追问
求关键代码…
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式