Reputation: 87
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
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
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