Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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");

        }

    }
Předmět Autor Datum
Nenašly se žádné odpovědi.

Zpět do poradny Odpovědět na původní otázku Nahoru