使用这个问题,我创建了下面的类,用于处理将文件拖放到JTextField中。该应用程序的目的是能够将文件拖入文本字段,并将文本字段的文本设置为文件路径(您可以在代码中清楚地看到目标)。
我的问题是以下代码无法编译。编译错误显示“无法引用不在同一方法中定义的非最终变量myPanel的内部类”。由于我没有使用过内部类,所以有人能向我展示如何解决错误并使代码按设计行为吗?
代码:
我的问题是以下代码无法编译。编译错误显示“无法引用不在同一方法中定义的非最终变量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<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);
}
}
final
对变量唯一的作用就是确保在初始化之后,你不能再给它赋值或者引用其他值。 - unholysampler