G
Guest
Gast
Hi,
ich habe Probleme mit dem interface Transferable.
Ich habe eine Methode, die so aussieht (es geht um das hier):
Die getImageFromTransferable Methode:
Das Problem ist folgendes:
Es fliegt eine UnsupportedFlavorException bei o = transferable.getTransferData(DataFlavor.imageFlavor);
Der Grund dafür ist mir auch klar: Ich ziehe die Daten aus einer JList, die aus einem Icon und einem Text besteht.
Daher hab ich versucht eine eigene Transferable Klasse und einen eigenen DataFlavor zu basteln:
Das Problem ist nun, dass ich meine Klasse MyTrans nicht in obiger Methode angeben kann:
Denn dann bekomme ich den Compilerfehler:
ich habe Probleme mit dem interface Transferable.
Ich habe eine Methode, die so aussieht (es geht um das hier):
Code:
public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {
Image dragImage = getImageFromTransferable(transferable);
...
return ConnectorState.ACCEPT;
}
Code:
private Image getImageFromTransferable(Transferable transferable) {
Object o = null;
try {
o = transferable.getTransferData(DataFlavor.imageFlavor);
} catch (IOException ex) {
ex.printStackTrace();
} catch (UnsupportedFlavorException ex) {
ex.printStackTrace();
}
return o instanceof Image ? (Image) o : Utilities.loadImage("/images/toolbarmap.png");
}
Das Problem ist folgendes:
Es fliegt eine UnsupportedFlavorException bei o = transferable.getTransferData(DataFlavor.imageFlavor);
Der Grund dafür ist mir auch klar: Ich ziehe die Daten aus einer JList, die aus einem Icon und einem Text besteht.
Daher hab ich versucht eine eigene Transferable Klasse und einen eigenen DataFlavor zu basteln:
Code:
public class MyTrans implements Transferable{
private ImgTxt transferredObject;
private static DataFlavor someClassFlavor = new DataFlavor(ImgTxt.class, ImgTxt.class.getSimpleName());
public MyTrans(ImgTxt transferredObject)
{
this.transferredObject = transferredObject;
}
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException
{
if (!flavor.equals(someClassFlavor))
{
throw new UnsupportedFlavorException(flavor);
}
return transferredObject;
}
public DataFlavor[] getTransferDataFlavors()
{
return new DataFlavor[]{ someClassFlavor };
}
public boolean isDataFlavorSupported(DataFlavor flavor)
{
return flavor.equals(someClassFlavor);
}
}
Das Problem ist nun, dass ich meine Klasse MyTrans nicht in obiger Methode angeben kann:
Code:
public ConnectorState isAcceptable(Widget widget, Point point, MyTrans transferable) {
Diese Fehlermeldung verstehe ich nicht. Meine Klasse MyTrans implementiert doch das Interface Transferable, warum kann ich die dann nicht anstelle von Transferable angeben?The type new AcceptProvider(){} must implement the inherited abstract method
AcceptProvider.isAcceptable(Widget, Point, Transferable)