我们正试图将变量file
传递给另一个类。我们有这些行了一个问题:无法声明类字段
file = (File) item;
listModel.addElement(file);
在我们声明,我们认为在整个类可用于现场file
类的开始..然而,当我们得到的线路中提到,我们得到错误file cannot be resolved to a variable
如果我们使file
为该类的局部变量,但是我们无法将变量file
传递到另一个类上。
下面是代码:
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
@SuppressWarnings("serial")
public class FileDragDemo extends JPanel {
public static File file;
public static List data;
public JList list = new JList();
public FileDragDemo() {
list.setDragEnabled(true);
list.setTransferHandler(new FileListTransferHandler(list));
add(new JScrollPane(list));
}
public 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) throws Exception {
//String filestring ="";
//data = new List;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
PdfEasyManager PdfEasyManagerObject = new PdfEasyManager();
try {
PdfEasyManagerObject.main(args);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
@SuppressWarnings("serial")
class FileListTransferHandler extends TransferHandler {
public 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;
}// close if
DefaultListModel listModel = new DefaultListModel();
for (Object item : data) {
file = (File) item;
listModel.addElement(file);
} // close for
//String filestring = file.toString();
list.setModel(listModel);
return true;
}// close try
catch (UnsupportedFlavorException e) {
return false;
} catch (IOException e) {
return false;
}
}
}
事实上,它不只是在优雅的,它很可能为静态数据是创建内存泄漏由于它们链接到类而不是未使用的对象实例,因此不会收集适当的垃圾。 – Orden
由于保持局部变量更好,您如何将它传递到另一个类以便可以使用? – Moe
要了解如何:你能解释你想在程序中声明静态变量的作用吗?也就是说,它的目的是什么? – Pachelbel