![](https://softscients.com/wp-content/uploads/2020/04/2.-Buku-Tips-dan-Trik-Pemrograman-Java-Membuat-Aplikasi-dengan-Fitur-Drag-and-Drop.png)
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