Hi!
Ich bin gerade dabei, meine ersten Schritte mit Drag&Drop zu versuchen...ich möchte Zeilen einer JList A per DnD in eine andere JList B kopieren. Mein Problem ist momentan nur, dass ich für beide JList ein eigenes ListModel geschrieben habe, und das verwirrt mich gerade etwas...außerdem habe ich einige Monate lang nicht mehr Programmiert und bin etwas aus der Übung...
Ich lese parallel das DnD-Tutorial von Sun und durchsuche regelmäßig dieses Forum, im Verständnis weitergeholfen hat mir insbesondere dieser Thread:
http://www.java-forum.org/de/viewtopic.php?t=54013
Trotzdem habe ich noch einige Fragen:
Dies steht als Beispiel für eine Methode im TransferHandler im Tutorial von Sun:
Diese Zeilen kann ich ja so nicht benutzen...da ich keine Strings habe, sondern die Daten in meinem ListModel in einem Vector<File> speichere. Wenn ich jetzt die Methode c.getSelection (zu wem auch immer gehörend...ich finde sie zumindest unter JComponent nicht) ausführe, was genau wird aus der Liste eigentlich übertragen? Vector<File> oder File[] oder Object[] oder int[] oder oder....? Oder seh ich den Wald vor Bäumen nicht? ;-)
Wenn ich mal annehme, dass c die JList ist - muss ich dann die Methode noch selber schreiben bzw. muss ich StringSelection durch eine eigene Klasse (implements Transferable?) ersetzen?
Soweit erstmal, ich melde mich später nochmal und trage bestimmt noch ein paar Fragen nach wenn ich mir das Tutorial weiter durchgeguckt habe...
vielen Dank schonmal für jede Art von Hilfe!
EDIT:
Ich habe mir jetzt mal das "generische" Beispiel für ein Transferable aus den Beispielsammlung dieses Forums angeguckt....es wird langsam klarer ;-)
Die obige Frage konnte ich mir zwar nicht beanworten, dafür hab ich ne neue:
Dort steht:
Ich verstehe nicht ganz, was der "DataFlavor[] flavors" mit den eigentlichen Daten "Object data" (die ja aus dem JComponent übergeben wurden) zu tun hat...es findet ja keinerlei "Austausch" oder "Kombination" von Informationen statt, die die Existenz von DataFlavor[] in diesem Scope rechtfertigen? Insbesondere
"flavors[0] = DataFlavor.stringFlavor;" verstehe ich überhaupt (noch) nicht...aber ich werde mal in die Richtung weitergooglen...
Ich bin gerade dabei, meine ersten Schritte mit Drag&Drop zu versuchen...ich möchte Zeilen einer JList A per DnD in eine andere JList B kopieren. Mein Problem ist momentan nur, dass ich für beide JList ein eigenes ListModel geschrieben habe, und das verwirrt mich gerade etwas...außerdem habe ich einige Monate lang nicht mehr Programmiert und bin etwas aus der Übung...
Ich lese parallel das DnD-Tutorial von Sun und durchsuche regelmäßig dieses Forum, im Verständnis weitergeholfen hat mir insbesondere dieser Thread:
http://www.java-forum.org/de/viewtopic.php?t=54013
Trotzdem habe ich noch einige Fragen:
Dies steht als Beispiel für eine Methode im TransferHandler im Tutorial von Sun:
Code:
Transferable createTransferable(JComponent c) {
return new StringSelection(c.getSelection());
}
Diese Zeilen kann ich ja so nicht benutzen...da ich keine Strings habe, sondern die Daten in meinem ListModel in einem Vector<File> speichere. Wenn ich jetzt die Methode c.getSelection (zu wem auch immer gehörend...ich finde sie zumindest unter JComponent nicht) ausführe, was genau wird aus der Liste eigentlich übertragen? Vector<File> oder File[] oder Object[] oder int[] oder oder....? Oder seh ich den Wald vor Bäumen nicht? ;-)
Wenn ich mal annehme, dass c die JList ist - muss ich dann die Methode noch selber schreiben bzw. muss ich StringSelection durch eine eigene Klasse (implements Transferable?) ersetzen?
Soweit erstmal, ich melde mich später nochmal und trage bestimmt noch ein paar Fragen nach wenn ich mir das Tutorial weiter durchgeguckt habe...
vielen Dank schonmal für jede Art von Hilfe!
EDIT:
Ich habe mir jetzt mal das "generische" Beispiel für ein Transferable aus den Beispielsammlung dieses Forums angeguckt....es wird langsam klarer ;-)
Die obige Frage konnte ich mir zwar nicht beanworten, dafür hab ich ne neue:
Dort steht:
Code:
class GenericTransferable implements Transferable {
private Object data;
private static final DataFlavor[] flavors = new DataFlavor[1];
static {flavors[0] = DataFlavor.stringFlavor;}
public GenericTransferable(final Object data) {
super();
this.data = data;
}
public DataFlavor[] getTransferDataFlavors() {return flavors;}
public boolean isDataFlavorSupported(final DataFlavor flavor) {return true;}
public Object getTransferData(final DataFlavor flavor) throws UnsupportedFlavorException, IOException {
return data;
}
}
Ich verstehe nicht ganz, was der "DataFlavor[] flavors" mit den eigentlichen Daten "Object data" (die ja aus dem JComponent übergeben wurden) zu tun hat...es findet ja keinerlei "Austausch" oder "Kombination" von Informationen statt, die die Existenz von DataFlavor[] in diesem Scope rechtfertigen? Insbesondere
"flavors[0] = DataFlavor.stringFlavor;" verstehe ich überhaupt (noch) nicht...aber ich werde mal in die Richtung weitergooglen...