Перетаскивание пути к файлу в Java Swing JTextField

Используя этот вопрос, я создал приведенный ниже класс, который обрабатывает перетаскивание файлы в JTextField. Суть приложения заключается в том, чтобы иметь возможность перетаскивать файл в текстовое поле и задавать для текста текстового поля путь к файлу (вы можете ясно видеть цель в коде).

Моя проблема в том, что приведенный ниже код не компилируется. Ошибка компиляции гласит Невозможно ссылаться на неконечную переменную myPanel внутри внутреннего класса, определенного в другом методе. Я мало работал с внутренними классами, поэтому может ли кто-нибудь показать мне, как устранить ошибку и заставить код вести себя так, как задумано?

Код:

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 droppedFiles = (List) 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);

}

}

7
задан Community 23 May 2017 в 12:16
поделиться