【发布时间】:2015-07-02 19:14:54
【问题描述】:
每次调用 getter 时都会收到 NullPointerException。代码如下:
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
public class FileChooser extends JFileChooser {
private int result;
private File filename;
private File subFile;
private FileNameExtensionFilter filter;
public FileChooser() {
filename = new File(System.getProperty("user.home"));
filter = new FileNameExtensionFilter("Subtitle Files (*.srt)", "srt");
}
public void createAndShowGUI() {
this.setDialogTitle("Select a file");
this.setCurrentDirectory(filename);
this.setFileFilter(filter);
result = this.showOpenDialog(this);
if(result == JFileChooser.APPROVE_OPTION)
subFile = this.getSelectedFile();
this.setVisible(true);
}
public File getFile() {
return subFile;
}
}
在我使用调用getFile() 函数的变量的任何地方都会得到空指针。 foo 在这种情况下。这是sn-p:
FileChooser fileChooser = new FileChooser();
File foo = fileChooser.getFile();
System.out.println(foo.getName()); //Null-Pointer
System.out.println(foo.getPath()); //Null-Pointer
更新:我碰巧有两个 FileChooser 实例,但我只想调用一次 createAndShowGUI()。如何在构造函数中初始化选中的文件?
【问题讨论】:
-
您应该也应该在构造函数中初始化 subFile。
-
@wazaaaap 我该怎么做?
-
只需将“createAndShowGUI”中的代码剪切并粘贴到构造函数中即可。现在您不需要调用该函数,它应该可以正常工作。
-
将它作为参数传递给构造函数并初始化它。 (用于更新)
-
@wazaaaap 你就是男人
标签: java nullpointerexception getter jfilechooser