我有一个JFrame,在我有JButton的框架上,我想要的是当这个文件被点击时,用户可以使用java JFileChooser加载一个文件。
我宣布FileChooser是这样的。
JFileChooser fc;
下面是按钮的动作监听器中的代码。
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.");
}
}
});
它给我带来的错误是
线程“AWT 0”中的异常: maple.Netflix$2.actionPerformed(Netflix.java:73) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.AWTEventMulticaster。未知源(未知源)在javax.swing.JComponent.processMouseEvent(Unknown源(java.awt.Component.processMouseEvent(未知源)),java.awt.Component.processEvent(未知源),java.awt.Container.processEvent(未知源),java.awt.Component.dispatchEventImpl(未知源),java.awt.Container.dispatchEventImpl(未知源),java.awt.Component.dispatchEvent(未知源),java.awt.Component.processEvent(未知源),java.awt.Container.processEvent(未知源),java.awt.Component.dispatchEventImpl(未知源),java.awt.Container.dispatchEventImpl(未知源),java.awt.Component.dispatchEvent(未知源),java.awt.LightweightDispatcher (未知源)。java.awt.LightweightDispatcher.processMouseEvent(Unknown源(未知源)在java.awt.LightweightDispatcher.dispatchEvent(Unknown源(RetargetMouseEvent),java.awt.Container.dispatchEventImpl(未知源),java.awt.Window.dispatchEventImpl(未知源),java.awt.Component.dispatchEvent(未知源),java.awt.EventQueue.dispatchEventImpl(未知源),java.awt.EventQueue.access$200(未知源),java.awt.EventQueue$3 (未知源)。运行(未知源)在java.awt.EventQueue$3.运行(未知源)在java.security.AccessController.doPrivileged(Native方法)在java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown源)在java.awt.EventQueue$4.运行(未知源)在java.awt.EventQueue$4.运行(未知源)在java.security.AccessController.doPrivileged(Native方法)在java.security.ProtectionDomain$1)。(未知源)在java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown源)在java.awt.EventDispatchThread.pumpEventsForFilter(Unknown源)在java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown源)在java.awt.EventDispatchThread.pumpEvents(Unknown源)在java.awt.EventDispatchThread.pumpEvents(Unknown源)在java.awt.EventDispatchThread.run(未知源)
这是第73线。
int returnVal = fc.showOpenDialog(Netflix.this);
发布于 2013-07-31 16:24:27
仅仅声明JFileChooser变量是不够的,因为您需要先将引用变量fc初始化为一个有效的对象,然后再使用它。这与任何其他引用变量相同。
JFileChooser fc = new JFileChooser();
发布于 2013-07-31 16:26:06
fc
的值为null。在调用方法之前,需要将其设置为适当对象的对象。
https://stackoverflow.com/questions/17975780
复制相似问题