
				Java drag and drop - obrázek do panelu - nefunguje, rada			
							
					Ahoj, snažím se pomocí okna dostat obrázek do panelu(např s plochy).
Mohl by mi někdo prosím poradit co dělám špatně?
(občas se v kódu vyskytuje slovo label (nevím proč, pletl jsem si to - ale jde o PANEL)
Zpracování DRAG AND DROP:
class MyDragDropListener implements DropTargetListener {
    public void drop(DropTargetDropEvent event) {
        // Accept copy drops
        event.acceptDrop(DnDConstants.ACTION_COPY);
        // Get the transfer which can provide the dropped item data
        Transferable transferable = event.getTransferable();
        // Get the data formats of the dropped item
        DataFlavor[] flavors = transferable.getTransferDataFlavors();
        // Loop through the flavors
        for (DataFlavor flavor : flavors) {
            try {
                // If the drop items are files
                if (flavor.isFlavorJavaFileListType()) {
                    //       List files = (List) transferable.getTransferData(flavor);
                    Object f = transferable.getTransferData(flavor);
                    // Loop them through
                    //   for (File file : files) {
                    // Print out the file path
//                        System.out.println("File path is '" + f.getPath() + "'.");
                    String cesta = f.toString();
                    String typ = "";
                    String cesta2 = "";
                    for (int i = 1; i < cesta.length() - 1; i++) {
                        if (cesta.charAt(i) == '\\') {
                            cesta2 = cesta2 + '/';
                        } else {
                            cesta2 = cesta2 + cesta.charAt(i);
                        }
                    }
                    for (int i = cesta2.length() - 1; i > 0; i--) {
                        if (cesta2.charAt(i) == '.') {
                            break;
                        }
                        typ = typ + cesta2.charAt(i);
                    }
                    typ = new StringBuilder(typ).reverse().toString().toLowerCase();
                    MojeOkno mo = new MojeOkno();
                    // Inform that the drop is complete
                    mo.VlozObrazekDoLabelu(cesta2);
                    System.out.println("METODA PROBEHLA");
                }
            } catch (Exception e) {
                // Print out the error stack
                e.printStackTrace();
            }
        }
        event.dropComplete(true);
    }
    public void dragEnter(DropTargetDragEvent event) {
    }
    public void dragExit(DropTargetEvent event) {
    }
    public void dragOver(DropTargetDragEvent event) {
    }
    public void dropActionChanged(DropTargetDragEvent event) {
    }
}Samotné vložení do panelu:
    public void VlozObrazekDoLabelu(String Mojecesta) {
        System.out.println("Cesta k obrazku: " + Mojecesta);
        try {
            img = ImageIO.read(new File(Mojecesta));
            Graphics2D g = (Graphics2D) PanelProObrazek_jPanel1.getGraphics();
            g.drawImage(img, 3, 3, PanelProObrazek_jPanel1.getWidth() - 6, PanelProObrazek_jPanel1.getHeight() - 6, this);
            System.out.println("Dostal jsem se do try");
            
        } catch (Exception e) {
            System.out.println("CHYBA");
        }
    }Akce drag and drop zpracuje správně cestu, ale nechce mi to načíst samotný obrázek, děkuji za rady.
Kultury kódu se nevšímejte, jde jen o test.
Mimo jiné, pokud tohle přiřadím tlačítku, tak to funguje:
  public void VlozObrazekDoLabelu(String Mojecesta) {
        System.out.println("Cesta k obrazku: " + Mojecesta);
        try {
            img = ImageIO.read(new File(Mojecesta));
            Graphics2D g = (Graphics2D) PanelProObrazek_jPanel1.getGraphics();
            g.drawImage(img, 3, 3, PanelProObrazek_jPanel1.getWidth() - 6, PanelProObrazek_jPanel1.getHeight() - 6, this);
            System.out.println("Dostal jsem se do try");
            
        } catch (Exception e) {
            System.out.println("CHYBA");
        }
    }