Belajar Java – Drag and Drop

By | January 15, 2021
Print Friendly, PDF & Email
1,402 Views

Sinopsis

Sudah sangat umum fitur drag and drop disematkan kedalam sebuah aplikasi sehingga menyingkat suatu proses, pada java fitur drag and drop (DnD) sangat mudah diterapkan, misalkan kalian akan membuat aplikasi Image Viewer yang berfungsi untuk menampilkan gambar dengan cara Drag and Drop. Aplikasi tersebut dibangun menggunakan component JButton yang dibungkus dengan  JScroolPane.

Tampilan akhir seperti ini

Pembuatan Method/Function

Setelah kalian menambahkan component diatas beserta desainnya, kalian tinggal menambahkan 1 function/method untuk dimasukan kedalam event listener  JButton. Dibawah ini functionnya yang harus kalian buat.

private void dragAndDrop(DropTargetDropEvent eventListener)
{
    try {
            Transferable transfer = eventListener.getTransferable();
            if(transfer.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                eventListener.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
                List objects = (List)transfer.getTransferData(DataFlavor.javaFileListFlavor);
                for(Object object : objects) {
                    if(object instanceof File) {
                        File source = (File)object;
                        File dest = new File(System.getProperty("user.home")+File.separator+source.getName());
                        Files.copy(Paths.get(source.getAbsolutePath()), Paths.get(dest.getAbsolutePath()), StandardCopyOption.REPLACE_EXISTING);
                        //System.out.println("File copied from "+source.getAbsolutePath()+" to "+dest.getAbsolutePath());
                        button1.setText("");
                        button1.setIcon(new ImageIcon(ImageIO.read(new File(dest.getAbsolutePath()))));
                        int tinggi = ImageIO.read(new File(dest.getAbsolutePath())).getHeight();
                        int lebar = ImageIO.read(new File(dest.getAbsolutePath())).getWidth();
                        jLabel1.setText("Tinggi :"+tinggi+" Lebar :"+lebar+" Tipe : "+ImageIO.read(new File(dest.getAbsolutePath())).getType());
                    }else
                    {
                        button1.setText(pesan);
                    }
                }
            } else if(transfer.isDataFlavorSupported(DataFlavor.stringFlavor)) {
                eventListener.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
                String type = (String)transfer.getTransferData(DataFlavor.stringFlavor);
                //System.err.println("Data flavor not supported: "+type);
            } else {
               // System.err.println("Data flavor not supported.");
            }
        } catch(UnsupportedFlavorException ex) {
            //System.err.println(ex.getMessage());
        } catch(IOException ex) {
           // System.err.println(ex.getMessage());
        } catch(Exception ex) {
            //System.err.println(ex.getMessage());
        } finally {
            eventListener.dropComplete(true);
        }
}

Kemudian kalian tambahkan event Listener tersebut di JButton

public DragAndDropViewer() {
    initComponents();
     button1.setDropTarget(new DropTarget() {
        @Override
        public void drop(DropTargetDropEvent dtde) {
            dragAndDrop(dtde);
        }
    });
   setTitle("Viewer - www.softscients.web.id");
    
}

Hasil akhir aplikasi seperti berikut dengan fitur drag and drop, misalkan kalian sudah ada gambar di Explorer maka seret saja gambar tersebut kedalam aplikasi

Leave a Reply