Hilfe zu Drag and Drop in SWT

mcbass

Mitglied
Hi

Ich versuche mich seit einiger Zeit an dem Tree und TreeItem Objekten und hab hier ein kleines Problem. Jedem TreeItem hänge ich ein Object mit TreeItem.setData an. Soweit so gut, allerdings geht das verloren, wenn ich drag and drop benutze.

In meiner "drop" methode erstelle ich mein neues TreeItem und will dazu natürlich die Informationen von dem "drag" object benutzen. Mit dem Namen geht das auch, aber das Objekt bekomme ich nicht raus.

Das Objekt "Computer" hat unteranderem eine Methode "getName", die mir einen String zurück gibt.


Hier der etwas vereinfachte code :
Code:
 public void drop (DropTargetEvent event) {
 
  if (event.data == null) {
    event.detail = DND.DROP_NONE;
   return;
  }
 
 
 // hier hole ich den name
 String text = (String) event.data;
 
 System.out.println("Name des drag objectes "+ text);
 
 
 // Das liefert eine ClassCastException
 Computer x = (Computer ) event.data;
 System.out.println("Computer Name : " + x.getName());
 
 }


Wie ich schon im quelltext geschrieben habe ist mein Versuch das Object da rauszubekommen nicht von Erfolg gekrönt. Ich bekomme mit dem Weg eine ClassCastException.

Laut Javadoc ist wohl "currentDataType" die Lösung, aber wie bekomme ich da mein Computer Objekt raus ?

mcbass
 
Hi,

wenn Du "Sebastian Scholz" bist, der nahezu das gleiche Problem im SWT-Userforum gepostet hat, ist die Sache erledigt.

Ansonsten startete der Thread folgt:

Hi

I have a tree with drag and drop which works fine so far.

I created a object "Book" which I attach to the treeItem with setData.
This also works fine.

The problem appears when I drag and drop a treeitem, I am not able to
transfer the object to the new treeitem. Getting the name is not a
problem, but the object is.

I use this to get the name :

public void drop (DropTargetEvent event) {
if (event.data == null) {
event.detail = DND.DROP_NONE;
return;
}

String text = (String) event.data;

}


which works ok, but how would I get the object. I assumed to do someting
like this :

Book mybook = (Book) event.data;
System.out.println(mybook.gettitle());

But that gave me a CastException.


Book mybook = (Book) event.item;
System.out.println(mybook.gettitle());

This works fine on the other hand, but unfortunately that gives me the
data of the drop target and not the source.

Hope anyone can help me out here.

Thanks,

Sebastian

Veronika Irvine (vom äußerst seltenem Typ weiblicher(!) ProgrammierGURU) äußerte sich zu diesem Problem wie folgt:


nachdem Ihr "Sebastian Scholz" seinen offenbar nicht auf Gefallen gestoßenen, aber funktionierenden Ansatz präsentierte:

Hi

actually I did a "workaround" if you can call it, just taking the class
defined

private Item dragSourceItem;

and this :

TreeItem tmpItem = (TreeItem)dragSourceItem;
Book mybook = (Book) tmpItem.getdata();
System.out.println(mybook.gettitle());


Now is that a good way to do this or any other suggestions ?


-Sebastian

P.S.: Bei Fragen rund um das SWT ist das SWT-Userforum definitiv "the place to be", daß einzige Forum, bei welchem man wirklich IMMER Antwort bekommt, die Entwickler von IBM (== GÖTTER) höchstpersönlich helfen.

Cheers,

Snake
 
Zurück