0

tableViewerセルの値をswtの別のtableViewerセルにドラッグする必要があります。ドラッグアンドドロップした場所でその値を削除し、tableViewerでドロップした場所に値を追加する必要があります。ドラッグアンドドロップはできますが、必要な場所にドロップできず、tableviewerでドラッグアンドドロップしたときに値を削除して追加できません。 。これが私が持っているものです:助けてくれてありがとう。

public void DragandDrop(){

    Transfer[] types = new Transfer[] { TextTransfer.getInstance() };

    DragSource source = new DragSource(table_2, DND.DROP_MOVE | DND.DROP_COPY);
    source.setTransfer(types);
    source.addDragListener(new DragSourceAdapter() {
      public void dragSetData(DragSourceEvent event) {
        DragSource ds = (DragSource) event.widget;
        Table table = (Table) ds.getControl();
        TableItem[] selection = table.getSelection();

        StringBuffer buff = new StringBuffer();
        for (int i = 0, n = selection.length; i < n; i++) {
          buff.append(selection[i].getText());
        }
        event.data = buff.toString();
      }
    });

    DropTarget target = new DropTarget(table_3, DND.DROP_MOVE | DND.DROP_COPY );
    target.setTransfer(types);
    target.addDropListener(new DropTargetAdapter() {
      public void dragEnter(DropTargetEvent event) {
        if (event.detail != DND.DROP_DEFAULT) {
          event.detail = (event.operations & DND.DROP_COPY) != 0 ? DND.DROP_COPY : DND.DROP_NONE;
        }
        for (int i = 0, n = event.dataTypes.length; i < n; i++) {
          if (TextTransfer.getInstance().isSupportedType(event.dataTypes[i])) {
            event.currentDataType = event.dataTypes[i];
          }
        }
      }

      public void dragOver(DropTargetEvent event) {
        event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL;
      }

      public void drop(DropTargetEvent event) {
        if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
          DropTarget target = (DropTarget) event.widget;
          Table table = (Table) target.getControl();
          String data = (String) event.data;

          TableItem item = new TableItem(table, SWT.NONE);
          item.setText(new String[] { data });
       //   table.redraw();
        }
      }
    });
}
4

2 に答える 2

0

選択した値を削除するには、次を使用できます

public void drop(DropTargetEvent event) {
if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
DropTarget target = (DropTarget) event.widget;
  Table table = (Table) target.getControl();
  String data = (String) event.data;
  TableItem item = new TableItem(table, SWT.NONE);
  item.setText(new String[] { data });
  //remove the tableitem you drag
  table.remove(table.getSelectionIndex());
 }   
于 2012-08-29T08:56:09.217 に答える