दिलचस्प पोस्ट
आर के लिए Windows पाठ संपादक की अनुशंसाएं जावास्क्रिप्ट में फ़ाइल नाम स्ट्रिंग से विस्तार कैसे निकालना है? '/' का उपयोग किए बिना प्रभाग एंड्रॉइड में पावर बटन को कैसे हुक कर सकते हैं? java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener मैं jQuery एनीमेशन का उपयोग कर पृष्ठभूमि की छवि कैसे बदलूं? एंड्रॉइड प्रोग्रामेटिक रूप से डीपी से पिक्सल की गणना कैसे करें जांचें कि कोई फ़ाइल पायथन में है या नहीं Vbscript में utf-8 पाठ फ़ाइल पढ़ें स्क्रीन पर एक पॉपअप विंडो केंद्र? Django queryset फ़िल्टरिंग में मैं एक समान नहीं हूं? FragmentPagerAdapter का उपयोग करके ViewPager में टुकड़ा रिक्त है दूसरी बार इसे देखा जाता है पायथन धूमकेतु सर्वर रनटाइम पर इकाई फ्रेमवर्क परिवर्तन कनेक्शन सीडी में पढ़ने के लिए read.csv () का उपयोग करते समय "इनपुट में एम्बेडेड नल (एस) मिला"

जावा में एक निर्देशिका से फ़ाइलों को कैसे खींचें और छोड़ें

मैं किसी हार्ड ड्राइव जैसे निर्देशिका से फ़ाइलें खींचना और छोड़ना चाहता हूं, लेकिन यह कैसे पता चलेगा कि यह कैसे करना है। मैंने जावा एपीआई पढ़ा है, लेकिन यह रंग बीनने की बात करता है और सूचियों के बीच खींचने और छोड़ रहा है, लेकिन कंप्यूटर फाइल सिस्टम से फ़ाइलों को कैसे खींच सकता है और मेरे आवेदन में ड्रॉप कैसे होता है मैंने हस्तांतरणहैंडलर वर्ग और एक माउस ईवेंट लिखने की कोशिश की जब ड्रैग शुरू होती है लेकिन कुछ भी काम करने लगता है अब मैं बस अपने JFileChooser सेट करने के लिए वापस आ गया हूँ ताकि ड्रैग को सक्षम किया गया है लेकिन ड्रॉप कैसे करें?

किसी भी जानकारी या सही दिशा में बिंदु काफी सराहना की।

import javax.swing.*; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.BorderFactory; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; import javax.swing.filechooser.FileFilter; public class FileChooserDemo extends JPanel implements ActionListener { JLabel selectedFileLabel; JList selectedFilesList; JLabel returnCodeLabel; public FileChooserDemo() { super(); createContent(); } void initFrameContent() { JPanel closePanel = new JPanel(); add(closePanel, BorderLayout.SOUTH); } private void createContent() { setLayout(new BorderLayout()); JPanel NorthPanel = new JPanel(); JMenuBar menuBar = new JMenuBar(); JMenu menu = new JMenu("File"); JMenuItem quit = new JMenuItem("Quit"); menuBar.add(menu); menu.add(quit); NorthPanel.add(menu,BorderLayout.NORTH); JPanel buttonPanel = new JPanel(new GridLayout(7,1 )); JButton openButton = new JButton("Open..."); openButton.setActionCommand("OPEN"); openButton.addActionListener(this); buttonPanel.add(openButton); JButton saveButton = new JButton("Save..."); saveButton.setActionCommand("SAVE"); saveButton.addActionListener(this); buttonPanel.add(saveButton); JButton delete = new JButton("Delete"); delete.addActionListener(this); delete.setActionCommand("DELETE"); buttonPanel.add(delete); add(buttonPanel, BorderLayout.WEST); // create a panel to display the selected file(s) and the return code JPanel displayPanel = new JPanel(new BorderLayout()); selectedFileLabel = new JLabel("-"); selectedFileLabel.setBorder(BorderFactory.createTitledBorder ("Selected File/Directory ")); displayPanel.add(selectedFileLabel, BorderLayout.NORTH); selectedFilesList = new JList(); JScrollPane sp = new JScrollPane(selectedFilesList); sp.setBorder(BorderFactory.createTitledBorder("Selected Files ")); MouseListener listener = new MouseAdapter() { public void mousePressed(MouseEvent me) { JComponent comp = (JComponent) me.getSource(); TransferHandler handler = comp.getTransferHandler(); handler.exportAsDrag(comp, me, TransferHandler.MOVE); } }; selectedFilesList.addMouseListener(listener); displayPanel.add(sp); returnCodeLabel = new JLabel(""); returnCodeLabel.setBorder(BorderFactory.createTitledBorder("Return Code")); displayPanel.add(returnCodeLabel, BorderLayout.SOUTH); add(displayPanel); } public void actionPerformed(ActionEvent e) { int option = 0; File selectedFile = null; File[] selectedFiles = new File[0]; if (e.getActionCommand().equals("CLOSE")) { System.exit(0); } else if (e.getActionCommand().equals("OPEN")) { JFileChooser chooser = new JFileChooser(); chooser.setDragEnabled(true); chooser.setMultiSelectionEnabled(true); option = chooser.showOpenDialog(this); selectedFiles = chooser.getSelectedFiles(); } else if (e.getActionCommand().equals("SAVE")) { JFileChooser chooser = new JFileChooser(); option = chooser.showSaveDialog(this); selectedFiles = chooser.getSelectedFiles(); } // display the selection and return code if (selectedFile != null) selectedFileLabel.setText(selectedFile.toString()); else selectedFileLabel.setText("null"); DefaultListModel listModel = new DefaultListModel(); for (int i =0; i < selectedFiles.length; i++) listModel.addElement(selectedFiles[i]); selectedFilesList.setModel(listModel); returnCodeLabel.setText(Integer.toString(option)); } public static void main(String[] args) { SwingUtilities.invokeLater (new Runnable() { public void run() { FileChooserDemo app = new FileChooserDemo(); app.initFrameContent(); JFrame frame = new JFrame("LoquetUP"); frame.getContentPane().add(app); frame.setDefaultCloseOperation(3); frame.setSize(600,400); frame.setResizable(false); frame.setLocationRelativeTo(null); //frame.pack(); frame.setVisible(true); } }); } } 

Solutions Collecting From Web of "जावा में एक निर्देशिका से फ़ाइलों को कैसे खींचें और छोड़ें"

यह मेरे विचार पर ले जाता है मैंने इस उदाहरण में "पारंपरिक" ड्रैग और ड्रॉप एपीआई का उपयोग किया है। इसमें कुछ अतिरिक्त "पेंट" बदलाव हैं, यह दिखाने के लिए कि आप क्या कर सकते हैं

यहां छवि विवरण दर्ज करेंयहां छवि विवरण दर्ज करें

यह उदाहरण फ़ोल्डर्स को स्कैन नहीं करता है, इसलिए कोई फ़ोल्डर केवल एक फाइल के रूप में पंजीकृत होगा, लेकिन मुझे यकीन है कि आप इसे काम कर सकते हैं

 public class TestDragNDropFiles { public static void main(String[] args) { new TestDragNDropFiles(); } public TestDragNDropFiles() { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { } JFrame frame = new JFrame("Testing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new BorderLayout()); frame.add(new DropPane()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } public class DropPane extends JPanel { private DropTarget dropTarget; private DropTargetHandler dropTargetHandler; private Point dragPoint; private boolean dragOver = false; private BufferedImage target; private JLabel message; public DropPane() { try { target = ImageIO.read(new File("target.png")); } catch (IOException ex) { ex.printStackTrace(); } setLayout(new GridBagLayout()); message = new JLabel(); message.setFont(message.getFont().deriveFont(Font.BOLD, 24)); add(message); } @Override public Dimension getPreferredSize() { return new Dimension(400, 400); } protected DropTarget getMyDropTarget() { if (dropTarget == null) { dropTarget = new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, null); } return dropTarget; } protected DropTargetHandler getDropTargetHandler() { if (dropTargetHandler == null) { dropTargetHandler = new DropTargetHandler(); } return dropTargetHandler; } @Override public void addNotify() { super.addNotify(); try { getMyDropTarget().addDropTargetListener(getDropTargetHandler()); } catch (TooManyListenersException ex) { ex.printStackTrace(); } } @Override public void removeNotify() { super.removeNotify(); getMyDropTarget().removeDropTargetListener(getDropTargetHandler()); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); if (dragOver) { Graphics2D g2d = (Graphics2D) g.create(); g2d.setColor(new Color(0, 255, 0, 64)); g2d.fill(new Rectangle(getWidth(), getHeight())); if (dragPoint != null && target != null) { int x = dragPoint.x - 12; int y = dragPoint.y - 12; g2d.drawImage(target, x, y, this); } g2d.dispose(); } } protected void importFiles(final List files) { Runnable run = new Runnable() { @Override public void run() { message.setText("You dropped " + files.size() + " files"); } }; SwingUtilities.invokeLater(run); } protected class DropTargetHandler implements DropTargetListener { protected void processDrag(DropTargetDragEvent dtde) { if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { dtde.acceptDrag(DnDConstants.ACTION_COPY); } else { dtde.rejectDrag(); } } @Override public void dragEnter(DropTargetDragEvent dtde) { processDrag(dtde); SwingUtilities.invokeLater(new DragUpdate(true, dtde.getLocation())); repaint(); } @Override public void dragOver(DropTargetDragEvent dtde) { processDrag(dtde); SwingUtilities.invokeLater(new DragUpdate(true, dtde.getLocation())); repaint(); } @Override public void dropActionChanged(DropTargetDragEvent dtde) { } @Override public void dragExit(DropTargetEvent dte) { SwingUtilities.invokeLater(new DragUpdate(false, null)); repaint(); } @Override public void drop(DropTargetDropEvent dtde) { SwingUtilities.invokeLater(new DragUpdate(false, null)); Transferable transferable = dtde.getTransferable(); if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { dtde.acceptDrop(dtde.getDropAction()); try { List transferData = (List) transferable.getTransferData(DataFlavor.javaFileListFlavor); if (transferData != null && transferData.size() > 0) { importFiles(transferData); dtde.dropComplete(true); } } catch (Exception ex) { ex.printStackTrace(); } } else { dtde.rejectDrop(); } } } public class DragUpdate implements Runnable { private boolean dragOver; private Point dragPoint; public DragUpdate(boolean dragOver, Point dragPoint) { this.dragOver = dragOver; this.dragPoint = dragPoint; } @Override public void run() { DropPane.this.dragOver = dragOver; DropPane.this.dragPoint = dragPoint; DropPane.this.repaint(); } } } } 

आपको ड्रैग एंड डॉप के साथ प्रयोग करने की ज़रूरत है और जब आप फ़ाइलों को खींचने की कोशिश करते हैं, तो वास्तव में क्या स्वाद उपलब्ध होते हैं। यदि आप अपने कस्टम ट्रांसफरहैंडल में ऐसा करते हैं तो आपको सुखद आश्चर्य होगा कि स्वाद एक DataFlavor.javaFileListFlavor , जो यह इंगित करता है कि आइटम को केवल एक List रूप में इस्तेमाल किया जा सकता है इसे आज़माएं और आप देखेंगे कि यह काम करता है!

आपके पोस्ट किए गए कोड की समीक्षा पर ध्यान दें, मुझे आपके हस्तांतरणहैंडलर का उपयोग करने के लिए कोई भी कोड दिखाई नहीं देता है, इसलिए यह कहना मुश्किल है कि आप यहां गलत क्यों कर रहे हैं।

1 संपादित करें
आप अपने ड्रैग और ड्रॉप के लिए माउसलेस्टनर का उपयोग करने की कोशिश कर रहे हैं, और मैं इस उपयोग से परिचित नहीं हूं। क्या आप एक ट्यूटोरियल के लिए एक संदर्भ दिखा सकते हैं जो आपको यह करने के लिए कहता है?

2 संपादित करें

 import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.File; import java.io.IOException; import java.util.List; import javax.swing.*; @SuppressWarnings("serial") public class FileDragDemo extends JPanel { private JList list = new JList(); public FileDragDemo() { list.setDragEnabled(true); list.setTransferHandler(new FileListTransferHandler(list)); add(new JScrollPane(list)); } private static void createAndShowGui() { FileDragDemo mainPanel = new FileDragDemo(); JFrame frame = new JFrame("FileDragDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(mainPanel); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGui(); } }); } } @SuppressWarnings("serial") class FileListTransferHandler extends TransferHandler { private JList list; public FileListTransferHandler(JList list) { this.list = list; } public int getSourceActions(JComponent c) { return COPY_OR_MOVE; } public boolean canImport(TransferSupport ts) { return ts.isDataFlavorSupported(DataFlavor.javaFileListFlavor); } public boolean importData(TransferSupport ts) { try { @SuppressWarnings("rawtypes") List data = (List) ts.getTransferable().getTransferData( DataFlavor.javaFileListFlavor); if (data.size() < 1) { return false; } DefaultListModel listModel = new DefaultListModel(); for (Object item : data) { File file = (File) item; listModel.addElement(file); } list.setModel(listModel); return true; } catch (UnsupportedFlavorException e) { return false; } catch (IOException e) { return false; } } }