Hallo Leute!
Ich habe ein riesengrosses Problem mit dem dropen von Bildern in Childframes
Mein Programm ist so aufgebaut, dass einmal gesplittet ist und links die Bilder sind und rechts die ganzen Childframes.
Nun habe ich das dragen der Bilder geschafft, kann sie aber nicht rausschieben. Fuer das Dragen habe ich den Code von Java Sun "How To" - Serie. Und da will es nur in den anderen Bilder reindropen.
Ich weiss nun aber nicht, wie man sie in den aktuellen ChildFrame dropen kann.
Kann mir da vielleicht einer helfen?
Ich habe ein riesengrosses Problem mit dem dropen von Bildern in Childframes
Mein Programm ist so aufgebaut, dass einmal gesplittet ist und links die Bilder sind und rechts die ganzen Childframes.
Nun habe ich das dragen der Bilder geschafft, kann sie aber nicht rausschieben. Fuer das Dragen habe ich den Code von Java Sun "How To" - Serie. Und da will es nur in den anderen Bilder reindropen.
Ich weiss nun aber nicht, wie man sie in den aktuellen ChildFrame dropen kann.
Kann mir da vielleicht einer helfen?
Code:
public class PictureTransferHandler extends TransferHandler {
DataFlavor picFlavor = DataFlavor.imageFlavor;
DTPicture src;
public boolean importData(JComponent c, Transferable t){
Image image;
if(canImport(c, t.getTransferDataFlavors())){
DTPicture pic = (DTPicture)c;
if(src == pic){
return false;
}
try{
image = (Image)t.getTransferData(picFlavor);
pic.setImage(image);
return true;
}catch(UnsupportedFlavorException ufe){
System.out.println("importData: unsupported data flavor");
}catch(IOException ioe){
System.out.println("importData: I/O exception");
}
}
return false;
}
protected Transferable createTransferable(JComponent c){
src = (DTPicture)c;
return new PictureTransferable(src);
}
public int getSourceActions(JComponent c){
return COPY_OR_MOVE;
}
public boolean canImport(JComponent c, DataFlavor[] flavors){
for(int i = 0; i < flavors.length; i++){
if(picFlavor.equals(flavors[i])) return false; //in "How-To"- tutorial returnwerte genau umgekehrt
}
return true;
}
class PictureTransferable implements Transferable{
private Image image;
PictureTransferable(DTPicture pic){
image = pic.image;
}
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if(!isDataFlavorSupported(flavor)){
throw new UnsupportedFlavorException(flavor);
}
return image;
}
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[] { picFlavor };
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
return picFlavor.equals(flavor);
}
}
}
Code:
public class Links extends JPanel implements DragSourceListener,
DragGestureListener, Transferable{
PictureTransferHandler picHandler;
public Links(){
super(new BorderLayout());
DragSource ds = DragSource.getDefaultDragSource();
..... // hier sind nur layout-sachen
}
public void dragGestureRecognized(DragGestureEvent event) {
event.startDrag(null, this, this);
}
public Object getTransferData(DataFlavor flavor) {
if(flavor.equals(MyFlavors.draggableLabelFlavor)) {
return(this);
}
else return null;
}
public DataFlavor[] getTransferDataFlavors() {
DataFlavor[] flavors = { MyFlavors.draggableLabelFlavor };
return flavors;
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
if(flavor.equals(MyFlavors.draggableLabelFlavor))
return true;
else
return false;
}
public void dragDropEnd(DragSourceDropEvent dsde) { }
public void dragEnter(DragSourceDragEvent dsde) { }
public void dragExit(DragSourceEvent dse) { }
public void dragOver(DragSourceDragEvent dsde) { }
public void dropActionChanged(DragSourceDragEvent dsde) { }
}