Я пытаюсь получить перетаскивание файла в мою программу. Я пытаюсь передать переменную StringFile
из класса FileDragDemo
и использовать ее дальше в своей программе, но у меня есть некоторые проблемы с ее выполнением кода, в котором он преждевременно называет другой класс. Что мы хотим сделать, чтобы программа вызывала класс PdfEasyManager
, как только мы перетаскиваем файл в listbox
в графический интерфейс. Тем не менее, способ, которым у нас это есть, теперь не дотягивает до перетаскивания файла и вызывает проблемы.Преждевременный вызов другого класса
я получаю следующие ошибки:
Исключение в потоке "АВТ-EventQueue-0" java.lang.NullPointerException в java.io.File (Unknown Source) на PdfEasyManager.main (PdfEasyManager. .java: 15) в FileDragDemo $ 1.Run (FileDragDemo.java:49) в java.awt.event.InvocationEvent.dispatch (Unknown Source) в java.awt.EventQueue.dispatchEventImpl (Unknown Source) в Явы. awt.EventQueue.access $ 500 (Неизвестный источник) в java.awt.EventQueue $ 3.run (Неизвестный источник) в java .awt.EventQueue $ 3.run (Unknown Source) на java.security.AccessController.doPrivileged (метод Native) в java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (Неизвестный источник) в java.awt.EventQueue.dispatchEvent (Неизвестно Источник) на java.awt.EventDispatchThread.pumpOneEventForFilters (Unknown Source) в java.awt.EventDispatchThread.pumpEventsForFilter (Unknown Source) в java.awt.EventDispatchThread.pumpEventsForHierarchy (Неизвестный источник) в java.awt.EventDispatchThread.pumpEvents (Неизвестный источник) на java.awt.EventDispatchThread.pumpEvents (Неизвестный источник) на java.awt.EventDispatchThread.run (Неизвестный источник)
Код runable класса:
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 {
//static FileListTransferHandler objectFileListTransferHandler = new FileListTransferHandler();
public static String StringFile;
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();
/*StringFile = FileListTransferHandler.StringFile;
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 static FileDragDemo.file;
//public File file;
//public List data;
public static String StringFile;
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 = (File) item;
//file1 = item;
listModel.addElement(file);
System.out.println ("%%%%%%%%%%%file... " + file);
StringFile = file.toString();
System.out.println ("%%%%%%%%%%%string... " + StringFile);
} // close for
//String filestring = file.toString();
list.setModel(listModel);
return true;
}// close try
catch (UnsupportedFlavorException e) {
return false;
} catch (IOException e) {
return false;
}
//PdfEasyManager PdfEasyManagerObject = new PdfEasyManager();
//try {
//PdfEasyManagerObject.main(args);
//} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
//}
}
}
Класс, который следует предыдущему классу
import java.io.File;
import java.io.IOException;
public class PdfEasyManager {
static FileDragDemo objectFileDragDemo = new FileDragDemo();
public static String StringFile = objectFileDragDemo.StringFile;
//static FileListTransferHandler objectFileDragDemo = new
FileListTransferHandler();
public static File file;
public static void main(String[] args) throws IOException {
System.out.println ("StringFile is: " + StringFile);
file = new File (StringFile);
EasySearch easysearchobject = new EasySearch();
System.out.println(easysearchobject.ToText()); //For some reason this needs to be there in order for it to work..?
searchPdftext searchPdftextobject = new searchPdftext();
try {
searchPdftextobject.main(null);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
могли бы вы вставить здесь эти строки: 'PdfEasyManager.java: 15' и' в FileDragDemo.java: 49' – nullpointer
Sure ! 15: 'file = new File (StringFile);' 49 закомментирован .. '/ * StringFile = FileListTransferHandler.StringFile;' Не уверен, что с этим .. – Moe
Вы никогда не инициализируете 'StringFile' внутри' FileDragDemo'. – Makoto