SWT TableItems mit DND sortieren

Status
Nicht offen für weitere Antworten.

ms0074

Neues Mitglied
Hallo,

ich bin noch ein rechter SWT-Neuling also bitte nicht gleich verzweifeln.
Mein Problem:
Ich möchte in einem Table (der schon einen DropListener hat) TableItems mittels DND sortiern.
Aber mich packt noch der blanke Wahnsinn, weil alles was ich finden ist das Beispiel von java2s.com und das taugt mal gar nix.

Vielleicht hat jamand eine Idee hier mein bisheriger Code:
Java:
import java.io.File;

import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DragSourceAdapter;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.FileTransfer;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;

public class neu {
	
	

  private static final String[] titles = new String[100];
private static final Image[] images = new Image[100];

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Weinbastion");
    shell.setLayout(new FillLayout());
    final Table source_table = new Table(shell, SWT.MULTI );
    source_table.setLinesVisible(true);
    
 for (int i = 0; i < 4; i++) {
        
        titles[i]= "abc " + i ;
          
       
      }
    
    images[0] = new Image(display, ".\\icons\\add.png");
    images[1] = new Image(display, ".\\icons\\basket.png");
    images[2] = new Image(display, ".\\icons\\book.png");
    images[3] = new Image(display, ".\\icons\\ipod.png");
    
    
    final Table table = new Table(shell, SWT.MULTI );
    table.setRedraw(true);
   table.setLinesVisible(true);
    for (int i = 0; i < 4; i++) {
      TableItem item = new TableItem(table, SWT.NONE);
      if (i % 2 == 0)
        item.setText("Drop a fi");
      item.setImage(images[i]);
      if (i % 2 == 1)
        item.setText("Drop text");
      item.setImage(images[i]);
    }
    
    for (int i = 0; i < 4; i++) {
        TableItem item = new TableItem(source_table, SWT.NONE);
        if (i % 2 == 0)
          item.setText("S1");
        item.setData("id", ""+ i);
        item.setImage(images[i]);
        if (i % 2 == 1)
          item.setText("S2");
        item.setData("id", ""+ i);
        item.setImage(images[i]);
      }
    
    DragSource dragSource = new DragSource(source_table, DND.DROP_MOVE);
    dragSource
        .setTransfer(new Transfer[] { TextTransfer.getInstance(), FileTransfer.getInstance() });
    dragSource.addDragListener(new DragSourceAdapter() {
      public void dragSetData(DragSourceEvent event) {
        if (FileTransfer.getInstance().isSupportedType(event.dataType)) {
          File file = new File("temp");
          event.data = new String[] { file.getAbsolutePath() };
        }
        if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
          
        	TableItem[] sel = source_table.getSelection();
            String transdata = ""; 
            for(int i = 0; i < sel.length; i++ ){
           	 transdata += sel[i].getData("id") + "|" ;
           	 
            }
        	event.data = transdata;
        }
      }
    });
    DropTarget dropTarget = new DropTarget(table, DND.DROP_MOVE | DND.DROP_DEFAULT);
    
    
    
    
    dropTarget
        .setTransfer(new Transfer[] { TextTransfer.getInstance(), FileTransfer.getInstance() });
    dropTarget.addDropListener(new DropTargetAdapter() {
      FileTransfer fileTransfer = FileTransfer.getInstance();

      TextTransfer textTransfer = TextTransfer.getInstance();

      public void dragEnter(DropTargetEvent event) {
        if (event.detail == DND.DROP_DEFAULT)
          event.detail = DND.DROP_MOVE;
      }

      public void dragOperationChanged(DropTargetEvent event) {
        if (event.detail == DND.DROP_DEFAULT)
          event.detail = DND.DROP_MOVE;
      }

      public void dragOver(DropTargetEvent event) {
        event.detail = DND.DROP_NONE;
        TableItem item = (TableItem) event.item;
        if (item == null)
          return;
        int itemIndex = table.indexOf(item);
        
          int index = 0;
          while (index < event.dataTypes.length) {
            if (textTransfer.isSupportedType(event.dataTypes[index]))
              break;
            index++;
          }
          if (index < event.dataTypes.length) {
            event.currentDataType = event.dataTypes[index];
            event.detail = DND.DROP_MOVE;
            return;
          }
        
      }

      public void drop(DropTargetEvent event) {
        TableItem item = (TableItem) event.item;
        if (item == null) {
          event.detail = DND.DROP_NONE;
          return;
        }
        if (fileTransfer.isSupportedType(event.currentDataType)) {
          String[] files = (String[]) event.data;
          if (files != null && files.length > 0) {
            item.setText(files[0]);
          }
        }
        if (textTransfer.isSupportedType(event.currentDataType)) {
          String text = (String) event.data;
          if (text != null) {
        	  Integer[] k = new Integer[100];
        	  
        	  String[] p = text.split("|");
        	  for (int i = 0; i < p.length; i++){
        		  String o = p[i].replace("|", "");
        		  if(!o.equals("")){
        		  int r = Integer.parseInt(o);        		  
        		  TableItem itemD = new TableItem(table, SWT.NONE);
        		  
        		  itemD.setText(titles[r]);
        		  itemD.setImage(images[r]);
        		  }
        	  }
        	  
        	  
        	  
            
          }
        }
      }

    });
    shell.setSize(300, 150);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}

Danke schon mal im voraus.
bis bald

markus
 
Zuletzt bearbeitet:

Wildcard

Top Contributor
Du willst doch eigentlich ein Modell manipulieren, oder? Warum nimmst du dann keinen JFace TreeViewer?
Damit geht alles sehr viel eleganter als mit purem SWT.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera ArrayList mit eigenen Objekten in JavaFX sortieren und ausgeben AWT, Swing, JavaFX & SWT 50
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
C Polygon Koordinaten richtig sortieren AWT, Swing, JavaFX & SWT 7
B Swing JTable sortieren AWT, Swing, JavaFX & SWT 2
I JavaFX Im TreeView, TreeItems sortieren AWT, Swing, JavaFX & SWT 3
M JavaFX TableView nach Spalte sortieren AWT, Swing, JavaFX & SWT 1
Thallius Swing Tabelle nach Datumsspalte sortieren AWT, Swing, JavaFX & SWT 4
K Swing Selectedrows falsch nach Sortieren AWT, Swing, JavaFX & SWT 1
W JTable erstellen und Spalten sortieren AWT, Swing, JavaFX & SWT 2
M Zufallszahlen sortieren AWT, Swing, JavaFX & SWT 6
maestr0 Treeviewer nach Kategorien sortieren AWT, Swing, JavaFX & SWT 6
J Swing JTable - nach Sortieren andere Methode aufrufen AWT, Swing, JavaFX & SWT 2
B JList nach dem Rendern sortieren AWT, Swing, JavaFX & SWT 3
K Probleme bei sortieren von jTable AWT, Swing, JavaFX & SWT 5
F Tabelle sortieren AWT, Swing, JavaFX & SWT 3
C Swing Elemente in JList sortieren AWT, Swing, JavaFX & SWT 2
S Tabelle sortieren, mit Ausnahme der letzten Zeile AWT, Swing, JavaFX & SWT 9
T Swing 2 Tabellen parallel sortieren? (synchronisieren) AWT, Swing, JavaFX & SWT 3
B setRowFilter sortieren nach 2 Kriterien AWT, Swing, JavaFX & SWT 4
A JTable- sortieren lassen AWT, Swing, JavaFX & SWT 10
C Swing JTable sortieren AWT, Swing, JavaFX & SWT 3
A SWT Tabelle (elegant) sortieren AWT, Swing, JavaFX & SWT 2
G JTable sortieren AWT, Swing, JavaFX & SWT 2
A SWT Tabelle Sortieren AWT, Swing, JavaFX & SWT 3
C JList: Sortieren von Zahlen AWT, Swing, JavaFX & SWT 4
P Dynamisch Sortieren AWT, Swing, JavaFX & SWT 2
D Swing Tabelle sortieren AWT, Swing, JavaFX & SWT 4
N Listen in JTable sortieren AWT, Swing, JavaFX & SWT 3
D mehrere JLabel sortieren AWT, Swing, JavaFX & SWT 10
E JTable nach mehreren Spalten sortieren AWT, Swing, JavaFX & SWT 14
E JTable sortieren AWT, Swing, JavaFX & SWT 3
B JTable: Zeilen sortieren, aber bestimmte Zeilen fest lassen AWT, Swing, JavaFX & SWT 9
S JTable sortieren AWT, Swing, JavaFX & SWT 17
pinerski Swing JList merkwürdiges Verhalten beim sortieren AWT, Swing, JavaFX & SWT 3
O Tabelle über Event sortieren AWT, Swing, JavaFX & SWT 4
T JTable - Einzelne Spalte nicht sortieren? AWT, Swing, JavaFX & SWT 2
G JTable sortieren mit eigenem Sortieralgorithmus AWT, Swing, JavaFX & SWT 3
G SWT-Table sortieren AWT, Swing, JavaFX & SWT 12
M JTable sortieren AWT, Swing, JavaFX & SWT 7
B [JTable] kein Sortieren der versteckten Columns AWT, Swing, JavaFX & SWT 9
K Zufallszahlen, in einem Diagramm sortieren. AWT, Swing, JavaFX & SWT 39
G JTable sortieren (Java 1.5) AWT, Swing, JavaFX & SWT 4
S Daten von DefaultTableModel sortieren AWT, Swing, JavaFX & SWT 3
G JTable nach RowHeader-Werten sortieren AWT, Swing, JavaFX & SWT 2
F JTable Spalte sortieren mit lauter JComboboxen ? AWT, Swing, JavaFX & SWT 15
G Tabellenspalten als IntegerWert sortieren AWT, Swing, JavaFX & SWT 7
T JTable Sortieren AWT, Swing, JavaFX & SWT 2
P Double-Werte sortieren mit TableRowSorter AWT, Swing, JavaFX & SWT 2
G Wie komme ich an die richtigen daten nach dem sortieren? AWT, Swing, JavaFX & SWT 6
I JMenuBar - Menüs sortieren AWT, Swing, JavaFX & SWT 2
E JTable sortieren und synchronisieren von zwei Datenvektoren AWT, Swing, JavaFX & SWT 2
L JTable (DefaultTableModel) nach Spalte sortieren-TableSorter AWT, Swing, JavaFX & SWT 2
S JTable + Sortieren => Problem bei Darstellung AWT, Swing, JavaFX & SWT 13
G JTable sortieren durch click im Header AWT, Swing, JavaFX & SWT 9
G JList sortieren AWT, Swing, JavaFX & SWT 7
C JTable sortieren nach Alphabet AWT, Swing, JavaFX & SWT 35
G Zellen in JTable alphabetisch sortieren AWT, Swing, JavaFX & SWT 13
P JTable nach mehreren Spalten sortieren AWT, Swing, JavaFX & SWT 15
G Inahlt von JTable sortieren AWT, Swing, JavaFX & SWT 2
G JTree sortieren AWT, Swing, JavaFX & SWT 2
A JTable sortieren AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben