use*_*619 2 java jfilechooser file jframe
我有一个JFrame,在框架上有JButton,我想要的是单击该文件时,用户可以使用java JFileChooser加载文件。
我这样声明FileChooser。
JFileChooser fc;
Run Code Online (Sandbox Code Playgroud)
这是按钮的动作侦听器中的代码。
JButton btnLoad = new JButton("Load .txt");
btnLoad.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int returnVal = fc.showOpenDialog(OpenFile.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
//This is where a real application would open the file.
System.out.println("Opening: " + file.getName() + ".");
} else {
System.out.println("Open command cancelled by user.");
}
}
});
Run Code Online (Sandbox Code Playgroud)
它正在产生我的错误是
javax.swing.AbstractButton $ Handler的javax.swing.AbstractButton.fireActionPerformed(Unknown Source)的maple.Netflix $ 2.actionPerformed(Netflix.java:73)处的线程“ AWT-EventQueue-0”中的java.lang.NullPointerException。 javax.swing.DefaultButtonModel.fire中的actionPerformed(未知源)java.awt中的javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知源)中的javax.swing.DefaultButtonModel.setPressed(未知源)中的ActionPerformed(未知源)。 AWTEventMulticaster.mouseReleased(未知源),java.awt.Component.processMouseEvent(未知源),javax.swing.JComponent.processMouseEvent(未知源),java.awt.Component.processEvent(未知源),java.awt.Container。 java.awt.Component上的processEvent(未知源)。java.awt.Container.dispatchEventEvent中的dispatchEventImpl(Unknown Source)java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)中java.awt.Component.dispatchEvent(Unknown Source)中java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) java.awt.LightweightDispatcher.dispatchEvent中的Unknown Source)(java.awt.Container.dispatchEventImpl中的java.awt.Window.dispatchEventImpl(Unknown Source)中的java.awt.Component.dispatchEvent(未知源) )的java.awt.EventQueue.dispatchEventImpl(未知源)的java.awt.EventQueue.access $ 200(未知源)的java.awt.EventQueue $ 3.run(未知源)的java.awt.EventQueue $ 3.run(未知的源)源代码位于java.security.AccessController.doPrivileged(本机方法)。的java.awt.EventQueue $ 4.run(未知源)处的java.awt.EventQueue $ 4.run(未知源)处的java.security.ProtectionDomain $ 1.doIntersectionPrivilege(未知源)处的java.awt.EventQueue $ 4.run(未知源)处的security.ProtectionDomain $ 1.doIntersectionPrivilege(未知源)处Java的java.security.AccessController.doPrivileged(本机方法)$ 1.doIntersectionPrivilege(未知的源)java.awt.EventQueue.dispatchEvent(未知的源)java.awt.EventDispatchThread.pumpOneEventForFilters(未知的源) java.awt.EventDispatchThread.pumpEvents(未知源)处的java.awt.EventDispatchThread.pumpEvents(未知源)处的java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)处的java.awt.EventDispatchThread.pumpEvents(未知源)处的java.awt.EventDispatchThread.pumpEvents(未知源) .EventDispatchThread。运行(未知源)
这是第73行。
int returnVal = fc.showOpenDialog(Netflix.this);
Run Code Online (Sandbox Code Playgroud)
仅声明JFileChooser变量是不够的,因为您需要在使用它之前先将引用变量fc初始化为有效对象。这与任何其他参考变量相同。
JFileChooser fc = new JFileChooser();
Run Code Online (Sandbox Code Playgroud)