Drag and Drop fähige Playerliste in Java...brauche hilfe



  • Hallo,
    dieses Semester behandeln wir Java in Info.Nun sollen wir aber als Prüfung gleich ein umfangreicheres Projekt erstellen.Wir haben uns für einen Audioplayer entschieden...leider beherrsche ich java noch nicht so gut 😞

    Ich bin jetzt erstmal für die Programmierung einer Drag and Drop fähigen Playerliste zuständig
    Die Liste soll sortierbar sein,man soll elemente löschen können, und man soll elemente per DND hinzufügen können

    Welche Komponenten würdet ihr mir für so eine Liste empfehlen?Und hat eventuell jemand einen Link zu einem guten und verständlichen Tutorial zu DnD?

    ich hoffe ihr könnt mir helfen :xmas1:

    MFG





  • ist leider nicht ganz sowas wie ichs mir vorgestellt habe...
    man sollte einfach eine Liste haben in die man dateien vom Desktop oder von wo auch immer reinziehen kann





  • so hab mit hilfe des java forums mitlerweile schonmal ein grundgerüst

    import java.awt.*;
    import java.awt.datatransfer.*;
    import java.io.*;
    import java.util.List;
    import javax.swing.*;
    import javax.swing.table.*;
    
    public class FileDrop extends JPanel {
    
        private FileTransferHandler transferHandler;
        private JTable table;
    
        public FileDrop() {
            super(new BorderLayout());
            JPanel dataPanel = new JPanel(new BorderLayout());
            dataPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
            table = new JTable();
            table.setDragEnabled(true);
            table.setAutoCreateRowSorter(true);
            table.setFillsViewportHeight(true);
            table.setModel(new DefaultTableModel(new String[]{"Titel"}, 0));
            transferHandler = new FileTransferHandler(table);
            table.setTransferHandler(transferHandler);
            dataPanel.add(new JScrollPane(table));
            add(dataPanel, BorderLayout.CENTER);
    
        }
    
        private static void createAndShowGUI() {
            //Create and set up the window.
            JFrame frame = new JFrame("File Drop");
            frame.setBounds(100, 100, 200, 500);
            frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            //Create and set up the content pane.
            FileDrop fViewer = new FileDrop();
            frame.setContentPane(fViewer);
            //Display the window.
            frame.setVisible(true);
    
        }
    
        public static void main(final String[] args) {
            //Schedule a job for the event-dispatching thread:
            //creating and showing this application's GUI.
            SwingUtilities.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    }
    
    class FileTransferHandler extends TransferHandler {
    
        private DataFlavor fileFlavor;
        private JTable table;
    
        FileTransferHandler(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();
                    for (int i = 0; i < files.size(); i++) {
                        final File file = (File) files.get(i);
                        String name = file.getName();
                        model.addRow(new String[]{name, name.substring(name.indexOf(".") + 1), "1"});
                    }
                    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;
        }
    }
    

    nun hab ich aber noch ein paar probleme

    1.Ist es möglich das man auch daten aus der tabelle löschen kann?(zb mit markieren und entf)
    2.kann man die daten auch schreibgeschützt machen?(also das man zb den liedtitel dann nur markieren kann)
    3.Ist es möglich das wenn man ein lied markiert dieses dann an den Player übergeben wird(also dann wenn ich play drücke abgespielt wird)?Oder werden in der tabelle nur infos gesammelt?
    4.Ist es möglich das die Tabelle nur bestimmte datentypen annimmt?

    und die wohl wichtigste frage ist Jtable für die Aufgabe geeignet?

    mfg



  • Kann es sein, dass du keine Ahnung von dem hast, was du da machen sollst?



  • steht doch oben 😉 ich weiß was ich machen soll,nur nicht richtig wie!
    ich habe java jetzt seit 4 Wochen und nun sollen wir gleich das Projekt machen...in den Übungen haben wir eine inkompetente Aushilfskraft...Der Typ bringt immer irgendwelchen Quellcode aus dem netz mit und diktiert uns alles,hat aber dabei keinen plan was er tut und kann uns nix erklären 😡


Anmelden zum Antworten