Siddique Ansari
Siddique Ansari

Reputation: 87

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerExceptionn

I want to open a file in jTextPane in read mode. But its giving some exception... What should I do? Should I need to write ActionListner? I am new to java .. So help me out Friends.. My code is given below..

try {
        // TODO add your handling code here:
        BufferedReader input=null;
        File file=new JFileChooser().getSelectedFile();
        /* Line no 524 */input = new BufferedReader(new InputStreamReader(new  FileInputStream(file)));
        jTextPane1.read(input, "READING FILE :-)");
    } catch (IOException ex) {
        Logger.getLogger(ExcelSheet.class.getName()).log(Level.SEVERE, null, ex);
    }

And these are the exceptions

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.io.FileInputStream.<init>(FileInputStream.java:103)
at cvparser.ExcelSheet.jButton2ActionPerformed(ExcelSheet.java:524)
at cvparser.ExcelSheet.access$300(ExcelSheet.java:36)
at cvparser.ExcelSheet$4.actionPerformed(ExcelSheet.java:207)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Upvotes: 0

Views: 2645

Answers (2)

MadProgrammer
MadProgrammer

Reputation: 347314

Doing this File file=new JFileChooser().getSelectedFile(); is simply creating an instance of a JFileChooser and asking it to pass back what ever represents a selected file. But seen as no file has been selected, it is return back null...

Try something more like...

JFileChooser fc = new JFileChooser();
switch (fc.showOpenDialog(null)) {
    case JFileChooser.APPROVE_OPTION:
        File file= fc.getSelectedFile();
        break;
}

Take a look at How to use file choosers for more details.

Updated with file reading example

JFileChooser fc = new JFileChooser();
switch (fc.showOpenDialog(null)) {
    case JFileChooser.APPROVE_OPTION:
        File file= fc.getSelectedFile();
        BufferedReader br = null;
        try {
            input = new BufferedReader(new FileReader(file));
            jTextPane1.read(input, "READING FILE :-)");
        } catch (IOException exp) {
            exp.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (Exception exp) {
            }
        }
        break;
}

Upvotes: 1

Jon Skeet
Jon Skeet

Reputation: 1502006

This is the problem:

File file=new JFileChooser().getSelectedFile();

You're creating a new JFileChooser but never showing it to the user, so there's no selected file. The file variable will have a null value, which isn't allowed for the argument to the FileInputStream constructor.

You need to display the chooser to the user and then get the selected file... checking that they actually did select a file before you use it. See the JFileChooser documentation for an example.

Upvotes: 1

Related Questions