Importation de fichier avec drag & drop

Résolu
cs_laakelm Messages postés 4 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 13 mars 2009 - 20 févr. 2009 à 02:21
BeaverKid Messages postés 1 Date d'inscription dimanche 7 février 2010 Statut Membre Dernière intervention 18 juin 2010 - 18 juin 2010 à 10:41
Bonjour,

je veux faire une importation de fichier vers mon application JAVA depuis mon bureau par exemple en utilisant drag & drop.

j'ai besoin que d'avoir récupérer le chemine complet de ce fichier "absolutePath".

Oui, je peux le récupérer avec Jfilechoose, mais je veux savoir est-il possible avec drag & drop.

Merci d'avance;

3 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
20 févr. 2009 à 07:48
Oui, c'est possible avec drag & drop

import java.awt.*;
import java.awt.datatransfer.*;
import java.io.*;
import java.util.List;
import javax.swing.*;
import javax.swing.table.*;
public class FileDrop1 extends JPanel {
    private FileTransferHandler1 transferHandler;
    private JTable table;
    public FileDrop1() {
        super(new BorderLayout());
        JPanel dataPanel = new JPanel(new BorderLayout());
        dataPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        table = new JTable();
        table.setDragEnabled(true);
        table.setModel(new DefaultTableModel(4, 1));
        transferHandler = new FileTransferHandler1(table);
        table.setTransferHandler(transferHandler);
        dataPanel.add(new JScrollPane(table));
        add(dataPanel, BorderLayout.CENTER);
    }
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("File Drop");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        FileDrop1 fViewer = new FileDrop1();
        frame.setContentPane(fViewer);
        frame.setVisible(true);
        frame.setSize(800, 600);
    }
    public static void main(final String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
class FileTransferHandler1 extends TransferHandler {
    private DataFlavor fileFlavor;
    private JTable table;
    FileTransferHandler1(final JTable list) {
        this.table = list;
        fileFlavor = DataFlavor.javaFileListFlavor;
    }
    @Override
    public boolean importData(final JComponent c, final Transferable t) {
        if (!canImport(c, t.getTransferDataFlavors())) {
            return false;
        }
        try {
            if (hasFileFlavor(t.getTransferDataFlavors())) {
                final List files = (List) t.getTransferData(fileFlavor);
                final DefaultTableModel model = (DefaultTableModel) table.getModel();
                final File file = (File) files.get(0);
                int row = table.getSelectedRow();
                int column = table.getSelectedColumn();
                model.setValueAt(file.getPath(), row, column);
                return true;
            }
        } catch (final UnsupportedFlavorException ufe) {
            System.out.println("importData: unsupported data flavor");
        } catch (final IOException ioe) {
            System.out.println("importData: I/O exception");
        }
        return false;
    }
    @Override
    public boolean canImport(final JComponent c, final DataFlavor[] flavors) {
        return hasFileFlavor(flavors);
    }
    private boolean hasFileFlavor(final DataFlavor[] flavors) {
        for (int i = 0; i < flavors.length; i++) {
            if (fileFlavor.equals(flavors[i])) {
                return true;
            }
        }
        return false;
    }
}
3
Rejoignez-nous