我們正試圖將變量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