Drag und Drop-Datei-Pfad zu Java Swing JTextField

Mit diese Frage, habe ich die folgende Klasse, die Griffe ziehen und ablegen von Dateien in ein JTextField. Der Punkt der Anwendung ist in der Lage, ziehen Sie eine Datei in das Textfeld und das Textfeld den Satz, um den Pfad der Datei (Sie können sehen, das Ziel in der code ziemlich klar).

Mein problem ist der folgende code wird nicht kompiliert. Der Kompilierungsfehler Staaten Cannot refer to non-final variable myPanel inside an inner class defined in a different method. Ich habe nicht viel gearbeitet mit inneren Klassen, so können seomeone zeigen Sie mir, wie ich den Fehler beheben und den code verhält sich wie entwickelt?

Code:

import java.awt.datatransfer.DataFlavor;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDropEvent;
import java.io.File;
import java.util.List;

import javax.swing.*;

public class Test {

public static void main(String[] args) {
    JTextArea myPanel = new JTextArea();

    myPanel.setDropTarget(new DropTarget() {
        public synchronized void drop(DropTargetDropEvent evt) {
            try {
                evt.acceptDrop(DnDConstants.ACTION_COPY);
                List<File> droppedFiles = (List<File>) evt
                        .getTransferable().getTransferData(
                                DataFlavor.javaFileListFlavor);
                for (File file : droppedFiles) {
                    /*
                     * NOTE:
                     *  When I change this to a println,
                     *  it prints the correct path
                     */
                    myPanel.setText(file.getAbsolutePath());
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    });

    JFrame frame = new JFrame();
    frame.add(myPanel);
    frame.setVisible(true);

}

}
InformationsquelleAutor ewok | 2012-03-12
Schreibe einen Kommentar