Я получаю исключение NullPointerException каждый раз, когда я вызываю getter. Вот код:NullPointerException при вызове getter JFileChooser
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
в этом случае. Вот фрагмент кода:
FileChooser fileChooser = new FileChooser();
File foo = fileChooser.getFile();
System.out.println(foo.getName()); //Null-Pointer
System.out.println(foo.getPath()); //Null-Pointer
UPDATE: я, случается, есть два экземпляра FileChooser
, но я хотел бы назвать createAndShowGUI()
только один раз. Как инициализировать выбранный файл в конструкторе?
Возможно, вы также должны инициализировать subFile в конструкторе. – Wazaaaap
@wazaaaap Как мне это сделать? – Jimmy
Просто вырежьте код в «createAndShowGUI» и вставьте его в конструктор. Теперь вам не нужно вызывать функцию, и она должна работать нормально. – Wazaaaap