2016-01-24 4 views
0

Я пытаюсь получить перетаскивание файла в мою программу. Я пытаюсь передать переменную 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(); 
     } 


} 

}  
+1

могли бы вы вставить здесь эти строки: 'PdfEasyManager.java: 15' и' в FileDragDemo.java: 49' – nullpointer

+0

Sure ! 15: 'file = new File (StringFile);' 49 закомментирован .. '/ * StringFile = FileListTransferHandler.StringFile;' Не уверен, что с этим .. – Moe

+0

Вы никогда не инициализируете 'StringFile' внутри' FileDragDemo'. – Makoto

ответ

0

Вы можете присвоить некоторое значение StringFile в вашем FileDragDemo классе. Код передает нулевое значение в file в классе PdfEasyManager. .

public static String StringFile = objectFileDragDemo.StringFile; //This is null 
public static File file; 
public static void main(String[] args) throws IOException { 

    System.out.println ("StringFile is: " + StringFile); 
    file = new File (StringFile); //Exception here 

или, по крайней мере, инициализируется с некоторыми default значение [только для примера public static String StringFile = "/Users/xyz/desktop";]

Смежные вопросы